Enter the directory of the maca folder on your drive and the name of the tissue you want to analyze.

tissue_of_interest = "Marrow"

Load the requisite packages and some additional helper functions.

library(here)
library(useful)
library(Seurat)
library(dplyr)
library(Matrix)
save_dir = here('00_data_ingest', 'tissue_robj')
# read the metadata to get the plates we want
plate_metadata_filename = here('00_data_ingest', '00_facs_raw_data', 'metadata_FACS.csv')
plate_metadata <- read.csv(plate_metadata_filename, sep=",", header = TRUE)
colnames(plate_metadata)[1] <- "plate.barcode"
plate_metadata

Subset the metadata on the tissue.

tissue_plates = filter(plate_metadata, tissue == tissue_of_interest)[,c('plate.barcode','tissue','subtissue','mouse.sex')]
tissue_plates

Load the read count data.

#Load the gene names and set the metadata columns by opening the first file
filename = here('00_data_ingest', '00_facs_raw_data', 'FACS', paste0(tissue_of_interest, '-counts.csv'))
raw.data = read.csv(filename, sep=",", row.names=1)
# raw.data = data.frame(row.names = rownames(raw.data))
corner(raw.data)

Make a vector of plate barcodes for each cell

plate.barcodes = lapply(colnames(raw.data), function(x) strsplit(strsplit(x, "_")[[1]][1], '.', fixed=TRUE)[[1]][2])
head(plate.barcodes)
[[1]]
[1] "D042044"

[[2]]
[1] "D042044"

[[3]]
[1] "D042044"

[[4]]
[1] "D042044"

[[5]]
[1] "D042044"

[[6]]
[1] "D042044"

Use only the metadata rows corresponding to Bladder plates. Make a plate barcode dataframe to “expand” the per-plate metadata to be per-cell.

Process the raw data and load it into the Seurat object.

# Find ERCC's, compute the percent ERCC, and drop them from the raw data.
erccs <- grep(pattern = "^ERCC-", x = rownames(x = raw.data), value = TRUE)
percent.ercc <- Matrix::colSums(raw.data[erccs, ])/Matrix::colSums(raw.data)
ercc.index <- grep(pattern = "^ERCC-", x = rownames(x = raw.data), value = FALSE)
raw.data <- raw.data[-ercc.index,]
# Create the Seurat object with all the data
tiss <- CreateSeuratObject(raw.data = raw.data, project = tissue_of_interest, 
                    min.cells = 5, min.genes = 5)
tiss <- AddMetaData(object = tiss, meta.data)
tiss <- AddMetaData(object = tiss, percent.ercc, col.name = "percent.ercc")
# Change default name for sums of counts from nUMI to nReads
colnames(tiss@meta.data)[colnames(tiss@meta.data) == 'nUMI'] <- 'nReads'
# Create metadata columns for annotations and subannotations
tiss@meta.data[,'annotation'] <- NA
tiss@meta.data[,'subannotation'] <- NA

Calculate percent ribosomal genes.

ribo.genes <- grep(pattern = "^Rp[sl][[:digit:]]", x = rownames(x = tiss@data), value = TRUE)
percent.ribo <- Matrix::colSums(tiss@raw.data[ribo.genes, ])/Matrix::colSums(tiss@raw.data)
tiss <- AddMetaData(object = tiss, metadata = percent.ribo, col.name = "percent.ribo")

A sanity check: genes per cell vs reads per cell.

GenePlot(object = tiss, gene1 = "nReads", gene2 = "nGene", use.raw=T)

Filter out cells with few reads and few genes.

tiss <- FilterCells(object = tiss, subset.names = c("nGene", "nReads"), 
    low.thresholds = c(500, 50000), high.thresholds = c(25000, 2000000))

Normalize the data, then regress out correlation with total reads

tiss <- NormalizeData(object = tiss)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|
tiss <- ScaleData(object = tiss, vars.to.regress = c("nReads", "percent.ribo","Rn45s"))
[1] "Regressing out nReads"       "Regressing out percent.ribo" "Regressing out Rn45s"       

  |                                                                                                                              
  |                                                                                                                        |   0%
  |                                                                                                                              
  |=                                                                                                                       |   1%
  |                                                                                                                              
  |==                                                                                                                      |   2%
  |                                                                                                                              
  |===                                                                                                                     |   2%
  |                                                                                                                              
  |===                                                                                                                     |   3%
  |                                                                                                                              
  |====                                                                                                                    |   3%
  |                                                                                                                              
  |=====                                                                                                                   |   4%
  |                                                                                                                              
  |=====                                                                                                                   |   5%
  |                                                                                                                              
  |======                                                                                                                  |   5%
  |                                                                                                                              
  |=======                                                                                                                 |   6%
  |                                                                                                                              
  |========                                                                                                                |   6%
  |                                                                                                                              
  |========                                                                                                                |   7%
  |                                                                                                                              
  |=========                                                                                                               |   7%
  |                                                                                                                              
  |==========                                                                                                              |   8%
  |                                                                                                                              
  |==========                                                                                                              |   9%
  |                                                                                                                              
  |===========                                                                                                             |   9%
  |                                                                                                                              
  |============                                                                                                            |  10%
  |                                                                                                                              
  |=============                                                                                                           |  11%
  |                                                                                                                              
  |==============                                                                                                          |  11%
  |                                                                                                                              
  |==============                                                                                                          |  12%
  |                                                                                                                              
  |===============                                                                                                         |  13%
  |                                                                                                                              
  |================                                                                                                        |  13%
  |                                                                                                                              
  |================                                                                                                        |  14%
  |                                                                                                                              
  |=================                                                                                                       |  14%
  |                                                                                                                              
  |==================                                                                                                      |  15%
  |                                                                                                                              
  |===================                                                                                                     |  15%
  |                                                                                                                              
  |===================                                                                                                     |  16%
  |                                                                                                                              
  |====================                                                                                                    |  17%
  |                                                                                                                              
  |=====================                                                                                                   |  17%
  |                                                                                                                              
  |=====================                                                                                                   |  18%
  |                                                                                                                              
  |======================                                                                                                  |  18%
  |                                                                                                                              
  |=======================                                                                                                 |  19%
  |                                                                                                                              
  |========================                                                                                                |  20%
  |                                                                                                                              
  |=========================                                                                                               |  21%
  |                                                                                                                              
  |==========================                                                                                              |  22%
  |                                                                                                                              
  |===========================                                                                                             |  22%
  |                                                                                                                              
  |===========================                                                                                             |  23%
  |                                                                                                                              
  |============================                                                                                            |  23%
  |                                                                                                                              
  |=============================                                                                                           |  24%
  |                                                                                                                              
  |=============================                                                                                           |  25%
  |                                                                                                                              
  |==============================                                                                                          |  25%
  |                                                                                                                              
  |===============================                                                                                         |  26%
  |                                                                                                                              
  |================================                                                                                        |  26%
  |                                                                                                                              
  |================================                                                                                        |  27%
  |                                                                                                                              
  |=================================                                                                                       |  27%
  |                                                                                                                              
  |==================================                                                                                      |  28%
  |                                                                                                                              
  |==================================                                                                                      |  29%
  |                                                                                                                              
  |===================================                                                                                     |  29%
  |                                                                                                                              
  |====================================                                                                                    |  30%
  |                                                                                                                              
  |=====================================                                                                                   |  31%
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 79-97 (Trachea_Plate.Rmd) 

  |                                                                                                                              
  |======================================                                                                                  |  31%
  |                                                                                                                              
  |======================================                                                                                  |  32%
  |                                                                                                                              
  |=======================================                                                                                 |  33%
  |                                                                                                                              
  |========================================                                                                                |  33%
  |                                                                                                                              
  |========================================                                                                                |  34%
  |                                                                                                                              
  |=========================================                                                                               |  34%
  |                                                                                                                              
  |==========================================                                                                              |  35%
  |                                                                                                                              
  |===========================================                                                                             |  35%
  |                                                                                                                              
  |===========================================                                                                             |  36%
  |                                                                                                                              
  |============================================                                                                            |  37%
  |                                                                                                                              
  |=============================================                                                                           |  37%
  |                                                                                                                              
  |=============================================                                                                           |  38%
  |                                                                                                                              
  |==============================================                                                                          |  38%
  |                                                                                                                              
  |===============================================                                                                         |  39%
  |                                                                                                                              
  |================================================                                                                        |  40%
  |                                                                                                                              
  |=================================================                                                                       |  41%
  |                                                                                                                              
  |==================================================                                                                      |  42%
  |                                                                                                                              
  |===================================================                                                                     |  42%
  |                                                                                                                              
  |===================================================                                                                     |  43%
  |                                                                                                                              
  |====================================================                                                                    |  43%
  |                                                                                                                              
  |=====================================================                                                                   |  44%
  |                                                                                                                              
  |=====================================================                                                                   |  45%
  |                                                                                                                              
  |======================================================                                                                  |  45%
  |                                                                                                                              
  |=======================================================                                                                 |  46%
  |                                                                                                                              
  |========================================================                                                                |  46%
  |                                                                                                                              
  |========================================================                                                                |  47%
  |                                                                                                                              
  |=========================================================                                                               |  47%
  |                                                                                                                              
  |==========================================================                                                              |  48%
  |                                                                                                                              
  |==========================================================                                                              |  49%
  |                                                                                                                              
  |===========================================================                                                             |  49%
  |                                                                                                                              
  |============================================================                                                            |  50%
  |                                                                                                                              
  |=============================================================                                                           |  51%
  |                                                                                                                              
  |==============================================================                                                          |  51%
  |                                                                                                                              
  |==============================================================                                                          |  52%
  |                                                                                                                              
  |===============================================================                                                         |  53%
  |                                                                                                                              
  |================================================================                                                        |  53%
  |                                                                                                                              
  |================================================================                                                        |  54%
  |                                                                                                                              
  |=================================================================                                                       |  54%
  |                                                                                                                              
  |==================================================================                                                      |  55%
  |                                                                                                                              
  |===================================================================                                                     |  55%
  |                                                                                                                              
  |===================================================================                                                     |  56%
  |                                                                                                                              
  |====================================================================                                                    |  57%
  |                                                                                                                              
  |=====================================================================                                                   |  57%
  |                                                                                                                              
  |=====================================================================                                                   |  58%
  |                                                                                                                              
  |======================================================================                                                  |  58%
  |                                                                                                                              
  |=======================================================================                                                 |  59%
  |                                                                                                                              
  |========================================================================                                                |  60%
  |                                                                                                                              
  |=========================================================================                                               |  61%
  |                                                                                                                              
  |==========================================================================                                              |  62%
  |                                                                                                                              
  |===========================================================================                                             |  62%
  |                                                                                                                              
  |===========================================================================                                             |  63%
  |                                                                                                                              
  |============================================================================                                            |  63%
  |                                                                                                                              
  |=============================================================================                                           |  64%
  |                                                                                                                              
  |=============================================================================                                           |  65%
  |                                                                                                                              
  |==============================================================================                                          |  65%
  |                                                                                                                              
  |===============================================================================                                         |  66%
  |                                                                                                                              
  |================================================================================                                        |  66%
  |                                                                                                                              
  |================================================================================                                        |  67%
  |                                                                                                                              
  |=================================================================================                                       |  67%
  |                                                                                                                              
  |==================================================================================                                      |  68%
  |                                                                                                                              
  |==================================================================================                                      |  69%
  |                                                                                                                              
  |===================================================================================                                     |  69%
  |                                                                                                                              
  |====================================================================================                                    |  70%
  |                                                                                                                              
  |=====================================================================================                                   |  71%
  |                                                                                                                              
  |======================================================================================                                  |  71%
  |                                                                                                                              
  |======================================================================================                                  |  72%
  |                                                                                                                              
  |=======================================================================================                                 |  73%
  |                                                                                                                              
  |========================================================================================                                |  73%
  |                                                                                                                              
  |========================================================================================                                |  74%
  |                                                                                                                              
  |=========================================================================================                               |  74%
  |                                                                                                                              
  |==========================================================================================                              |  75%
  |                                                                                                                              
  |===========================================================================================                             |  75%
  |                                                                                                                              
  |===========================================================================================                             |  76%
  |                                                                                                                              
  |============================================================================================                            |  77%
  |                                                                                                                              
  |=============================================================================================                           |  77%
  |                                                                                                                              
  |=============================================================================================                           |  78%
  |                                                                                                                              
  |==============================================================================================                          |  78%
  |                                                                                                                              
  |===============================================================================================                         |  79%
  |                                                                                                                              
  |================================================================================================                        |  80%
  |                                                                                                                              
  |=================================================================================================                       |  81%
  |                                                                                                                              
  |==================================================================================================                      |  82%
  |                                                                                                                              
  |===================================================================================================                     |  82%
  |                                                                                                                              
  |===================================================================================================                     |  83%
  |                                                                                                                              
  |====================================================================================================                    |  83%
  |                                                                                                                              
  |=====================================================================================================                   |  84%
  |                                                                                                                              
  |=====================================================================================================                   |  85%
  |                                                                                                                              
  |======================================================================================================                  |  85%
  |                                                                                                                              
  |=======================================================================================================                 |  86%
  |                                                                                                                              
  |========================================================================================================                |  86%
  |                                                                                                                              
  |========================================================================================================                |  87%
  |                                                                                                                              
  |=========================================================================================================               |  87%
  |                                                                                                                              
  |==========================================================================================================              |  88%
  |                                                                                                                              
  |==========================================================================================================              |  89%
  |                                                                                                                              
  |===========================================================================================================             |  89%
  |                                                                                                                              
  |============================================================================================================            |  90%
  |                                                                                                                              
  |=============================================================================================================           |  91%
  |                                                                                                                              
  |==============================================================================================================          |  91%
  |                                                                                                                              
  |==============================================================================================================          |  92%
  |                                                                                                                              
  |===============================================================================================================         |  93%
  |                                                                                                                              
  |================================================================================================================        |  93%
  |                                                                                                                              
  |================================================================================================================        |  94%
  |                                                                                                                              
  |=================================================================================================================       |  94%
  |                                                                                                                              
  |==================================================================================================================      |  95%
  |                                                                                                                              
  |===================================================================================================================     |  95%
  |                                                                                                                              
  |===================================================================================================================     |  96%
  |                                                                                                                              
  |====================================================================================================================    |  97%
  |                                                                                                                              
  |=====================================================================================================================   |  97%
  |                                                                                                                              
  |=====================================================================================================================   |  98%
  |                                                                                                                              
  |======================================================================================================================  |  98%
  |                                                                                                                              
  |======================================================================================================================= |  99%
  |                                                                                                                              
  |========================================================================================================================| 100%
[1] "Scaling data matrix"

  |                                                                                                                              
  |                                                                                                                        |   0%
  |                                                                                                                              
  |=======                                                                                                                 |   6%
  |                                                                                                                              
  |=============                                                                                                           |  11%
  |                                                                                                                              
  |====================                                                                                                    |  17%
  |                                                                                                                              
  |===========================                                                                                             |  22%
  |                                                                                                                              
  |=================================                                                                                       |  28%
  |                                                                                                                              
  |========================================                                                                                |  33%
  |                                                                                                                              
  |===============================================                                                                         |  39%
  |                                                                                                                              
  |=====================================================                                                                   |  44%
  |                                                                                                                              
  |============================================================                                                            |  50%
  |                                                                                                                              
  |===================================================================                                                     |  56%
  |                                                                                                                              
  |=========================================================================                                               |  61%
  |                                                                                                                              
  |================================================================================                                        |  67%
  |                                                                                                                              
  |=======================================================================================                                 |  72%
  |                                                                                                                              
  |=============================================================================================                           |  78%
  |                                                                                                                              
  |====================================================================================================                    |  83%
  |                                                                                                                              
  |===========================================================================================================             |  89%
  |                                                                                                                              
  |=================================================================================================================       |  94%
  |                                                                                                                              
  |========================================================================================================================| 100%
tiss <- FindVariableGenes(object = tiss, do.plot = TRUE, x.high.cutoff = Inf, y.cutoff = 0.5)
Calculating gene means
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variance to mean ratios
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|

Run Principal Component Analysis.

tiss <- RunPCA(object = tiss, do.print = FALSE)
tiss <- ProjectPCA(object = tiss, do.print = FALSE)

Later on (in FindClusters and TSNE) you will pick a number of principal components to use. This has the effect of keeping the major directions of variation in the data and, ideally, supressing noise. There is no correct answer to the number to use, but a decent rule of thumb is to go until the plot plateaus.

PCElbowPlot(object = tiss)

Choose the number of principal components to use.

# Set number of principal components. 
n.pcs = 15

The clustering is performed based on a nearest neighbors graph. Cells that have similar expression will be joined together. The Louvain algorithm looks for groups of cells with high modularity–more connections within the group than between groups. The resolution parameter determines the scale…higher resolution will give more clusters, lower resolution will give fewer.

For the top-level clustering, aim to under-cluster instead of over-cluster. It will be easy to subset groups and further analyze them below.

# Set resolution 
res.used <- 0.5
tiss <- FindClusters(object = tiss, reduction.type = "pca", dims.use = 1:n.pcs, 
    resolution = res.used, print.output = 0, save.SNN = TRUE)

To visualize

# If cells are too spread out, you can raise the perplexity. If you have few cells, try a lower perplexity (but never less than 10).
tiss <- RunTSNE(object = tiss, dims.use = 1:n.pcs, seed.use = 10, perplexity=84)
# note that you can set do.label=T to help label individual clusters
TSNEPlot(object = tiss, do.label = T)

Check expression of genes of interset.

Dotplots let you see the intensity of exppression and the fraction of cells expressing for each of your genes of interest.

How big are the clusters?

table(tiss@ident)

   0    1    2    3    4    5    6    7    8    9 
1137  863  770  700  324  285  278  210  177  153 

Which markers identify a specific cluster?

clust.markers <- FindMarkers(object = tiss, ident.1 = 0, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 21s      
   |+                                                 | 2 % ~02m 19s      
   |++                                                | 3 % ~02m 17s      
   |++                                                | 4 % ~02m 25s      
   |+++                                               | 5 % ~02m 23s      
   |+++                                               | 6 % ~02m 19s      
   |++++                                              | 7 % ~02m 16s      
   |++++                                              | 8 % ~02m 15s      
   |+++++                                             | 9 % ~02m 15s      
   |+++++                                             | 10% ~02m 13s      
   |++++++                                            | 11% ~02m 10s      
   |++++++                                            | 12% ~02m 08s      
   |+++++++                                           | 13% ~02m 06s      
   |+++++++                                           | 14% ~02m 05s      
   |++++++++                                          | 15% ~02m 04s      
   |++++++++                                          | 16% ~02m 02s      
   |+++++++++                                         | 17% ~02m 01s      
   |+++++++++                                         | 18% ~01m 59s      
   |++++++++++                                        | 19% ~01m 57s      
   |++++++++++                                        | 20% ~01m 56s      
   |+++++++++++                                       | 21% ~01m 54s      
   |+++++++++++                                       | 22% ~01m 54s      
   |++++++++++++                                      | 23% ~01m 52s      
   |++++++++++++                                      | 24% ~01m 51s      
   |+++++++++++++                                     | 25% ~01m 50s      
   |+++++++++++++                                     | 26% ~01m 48s      
   |++++++++++++++                                    | 27% ~01m 47s      
   |++++++++++++++                                    | 28% ~01m 46s      
   |+++++++++++++++                                   | 29% ~01m 45s      
   |+++++++++++++++                                   | 30% ~01m 44s      
   |++++++++++++++++                                  | 31% ~01m 45s      
   |++++++++++++++++                                  | 32% ~01m 45s      
   |+++++++++++++++++                                 | 33% ~01m 44s      
   |+++++++++++++++++                                | 34% ~01m 42s      
   |++++++++++++++++++                                | 35% ~01m 40s      
   |++++++++++++++++++                                | 36% ~01m 38s      
   |+++++++++++++++++++                               | 37% ~01m 37s      
   |+++++++++++++++++++                               | 38% ~01m 35s      
   |++++++++++++++++++++                              | 39% ~01m 35s      
   |++++++++++++++++++++                              | 40% ~01m 33s      
   |+++++++++++++++++++++                             | 41% ~01m 31s      
   |+++++++++++++++++++++                             | 42% ~01m 30s      
   |++++++++++++++++++++++                            | 43% ~01m 28s      
   |++++++++++++++++++++++                            | 44% ~01m 26s      
   |+++++++++++++++++++++++                           | 45% ~01m 25s      
   |+++++++++++++++++++++++                           | 46% ~01m 23s      
   |++++++++++++++++++++++++                          | 47% ~01m 21s      
   |++++++++++++++++++++++++                          | 48% ~01m 19s      
   |+++++++++++++++++++++++++                         | 49% ~01m 18s      
   |+++++++++++++++++++++++++                         | 50% ~01m 16s      
   |++++++++++++++++++++++++++                        | 51% ~01m 14s      
   |++++++++++++++++++++++++++                        | 52% ~01m 13s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 11s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 10s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 08s      
   |++++++++++++++++++++++++++++                     | 56% ~01m 06s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 05s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 03s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 01s      
   |++++++++++++++++++++++++++++++                    | 60% ~60s          
   |+++++++++++++++++++++++++++++++                   | 61% ~58s          
   |+++++++++++++++++++++++++++++++                   | 62% ~57s          
   |++++++++++++++++++++++++++++++++                  | 63% ~55s          
   |++++++++++++++++++++++++++++++++                  | 64% ~54s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~52s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~50s          
   |++++++++++++++++++++++++++++++++++                | 67% ~49s          
   |++++++++++++++++++++++++++++++++++               | 68% ~47s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~46s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~44s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~43s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~41s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~40s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~38s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~37s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~35s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~34s          
   |+++++++++++++++++++++++++++++++++++++++          | 78% ~32s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~31s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~29s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~28s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~26s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~25s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~22s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++++    | 90% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 25s
print(x = head(x= clust.markers, n = 10))

You can also compute all markers for all clusters at once. This may take some time.

tiss.markers <- FindAllMarkers(object = tiss, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 07s      
   |++                                                | 2 % ~02m 05s      
   |++                                                | 3 % ~02m 03s      
   |+++                                               | 4 % ~02m 02s      
   |+++                                               | 5 % ~02m 01s      
   |++++                                              | 6 % ~02m 00s      
   |++++                                              | 7 % ~01m 58s      
   |+++++                                             | 8 % ~01m 57s      
   |+++++                                             | 9 % ~01m 58s      
   |++++++                                            | 11% ~01m 57s      
   |++++++                                            | 12% ~01m 55s      
   |+++++++                                           | 13% ~01m 54s      
   |+++++++                                           | 14% ~01m 52s      
   |++++++++                                          | 15% ~01m 51s      
   |++++++++                                          | 16% ~01m 49s      
   |+++++++++                                         | 17% ~01m 48s      
   |+++++++++                                         | 18% ~01m 46s      
   |++++++++++                                        | 19% ~01m 44s      
   |++++++++++                                        | 20% ~01m 43s      
   |+++++++++++                                       | 21% ~01m 41s      
   |++++++++++++                                      | 22% ~01m 40s      
   |++++++++++++                                      | 23% ~01m 39s      
   |+++++++++++++                                     | 24% ~01m 37s      
   |+++++++++++++                                     | 25% ~01m 36s      
   |++++++++++++++                                    | 26% ~01m 34s      
   |++++++++++++++                                    | 27% ~01m 33s      
   |+++++++++++++++                                   | 28% ~01m 31s      
   |+++++++++++++++                                   | 29% ~01m 30s      
   |++++++++++++++++                                  | 31% ~01m 29s      
   |++++++++++++++++                                  | 32% ~01m 28s      
   |+++++++++++++++++                                 | 33% ~01m 27s      
   |+++++++++++++++++                                 | 34% ~01m 26s      
   |++++++++++++++++++                                | 35% ~01m 25s      
   |++++++++++++++++++                                | 36% ~01m 23s      
   |+++++++++++++++++++                               | 37% ~01m 22s      
   |+++++++++++++++++++                               | 38% ~01m 21s      
   |++++++++++++++++++++                              | 39% ~01m 19s      
   |++++++++++++++++++++                              | 40% ~01m 18s      
   |+++++++++++++++++++++                             | 41% ~01m 17s      
   |++++++++++++++++++++++                            | 42% ~01m 15s      
   |++++++++++++++++++++++                            | 43% ~01m 14s      
   |+++++++++++++++++++++++                           | 44% ~01m 12s      
   |+++++++++++++++++++++++                           | 45% ~01m 11s      
   |++++++++++++++++++++++++                          | 46% ~01m 11s      
   |++++++++++++++++++++++++                          | 47% ~01m 09s      
   |+++++++++++++++++++++++++                         | 48% ~01m 08s      
   |+++++++++++++++++++++++++                         | 49% ~01m 07s      
   |++++++++++++++++++++++++++                        | 51% ~01m 05s      
   |++++++++++++++++++++++++++                        | 52% ~01m 04s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 02s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 01s      
   |++++++++++++++++++++++++++++                      | 55% ~59s          
   |++++++++++++++++++++++++++++                      | 56% ~58s          
   |+++++++++++++++++++++++++++++                     | 57% ~57s          
   |+++++++++++++++++++++++++++++                     | 58% ~55s          
   |++++++++++++++++++++++++++++++                    | 59% ~54s          
   |++++++++++++++++++++++++++++++                    | 60% ~52s          
   |+++++++++++++++++++++++++++++++                   | 61% ~51s          
   |++++++++++++++++++++++++++++++++                  | 62% ~50s          
   |++++++++++++++++++++++++++++++++                  | 63% ~48s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~47s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~45s          
   |++++++++++++++++++++++++++++++++++                | 66% ~44s          
   |++++++++++++++++++++++++++++++++++                | 67% ~43s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~41s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~40s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~38s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~37s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~36s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~34s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~33s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~32s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~30s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~29s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~27s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~26s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~25s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~23s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~22s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 13s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 12s      
   |++                                                | 2 % ~01m 13s      
   |++                                                | 3 % ~01m 12s      
   |+++                                               | 4 % ~01m 11s      
   |+++                                               | 5 % ~01m 10s      
   |++++                                              | 6 % ~01m 09s      
   |++++                                              | 7 % ~01m 09s      
   |+++++                                             | 8 % ~01m 08s      
   |+++++                                             | 9 % ~01m 07s      
   |++++++                                            | 10% ~01m 07s      
   |++++++                                            | 11% ~01m 07s      
   |+++++++                                           | 12% ~01m 07s      
   |+++++++                                           | 13% ~01m 06s      
   |++++++++                                          | 14% ~01m 05s      
   |++++++++                                          | 15% ~01m 04s      
   |+++++++++                                         | 16% ~01m 03s      
   |+++++++++                                         | 18% ~01m 02s      
   |++++++++++                                        | 19% ~01m 01s      
   |++++++++++                                        | 20% ~01m 00s      
   |+++++++++++                                       | 21% ~59s          
   |+++++++++++                                       | 22% ~59s          
   |++++++++++++                                      | 23% ~58s          
   |++++++++++++                                      | 24% ~57s          
   |+++++++++++++                                     | 25% ~57s          
   |+++++++++++++                                     | 26% ~56s          
   |++++++++++++++                                    | 27% ~56s          
   |++++++++++++++                                    | 28% ~55s          
   |+++++++++++++++                                   | 29% ~54s          
   |+++++++++++++++                                   | 30% ~53s          
   |++++++++++++++++                                  | 31% ~52s          
   |++++++++++++++++                                  | 32% ~52s          
   |+++++++++++++++++                                 | 33% ~51s          
   |++++++++++++++++++                                | 34% ~50s          
   |++++++++++++++++++                                | 35% ~49s          
   |+++++++++++++++++++                               | 36% ~49s          
   |+++++++++++++++++++                               | 37% ~48s          
   |++++++++++++++++++++                              | 38% ~47s          
   |++++++++++++++++++++                              | 39% ~46s          
   |+++++++++++++++++++++                             | 40% ~46s          
   |+++++++++++++++++++++                             | 41% ~45s          
   |++++++++++++++++++++++                            | 42% ~44s          
   |++++++++++++++++++++++                            | 43% ~44s          
   |+++++++++++++++++++++++                           | 44% ~44s          
   |+++++++++++++++++++++++                           | 45% ~44s          
   |++++++++++++++++++++++++                          | 46% ~43s          
   |++++++++++++++++++++++++                          | 47% ~42s          
   |+++++++++++++++++++++++++                         | 48% ~42s          
   |+++++++++++++++++++++++++                         | 49% ~41s          
   |++++++++++++++++++++++++++                        | 51% ~41s          
   |++++++++++++++++++++++++++                        | 52% ~40s          
   |+++++++++++++++++++++++++++                       | 53% ~39s          
   |+++++++++++++++++++++++++++                       | 54% ~38s          
   |++++++++++++++++++++++++++++                      | 55% ~37s          
   |++++++++++++++++++++++++++++                      | 56% ~36s          
   |+++++++++++++++++++++++++++++                     | 57% ~35s          
   |+++++++++++++++++++++++++++++                     | 58% ~34s          
   |++++++++++++++++++++++++++++++                    | 59% ~34s          
   |++++++++++++++++++++++++++++++                    | 60% ~33s          
   |+++++++++++++++++++++++++++++++                   | 61% ~32s          
   |+++++++++++++++++++++++++++++++                   | 62% ~31s          
   |++++++++++++++++++++++++++++++++                  | 63% ~30s          
   |++++++++++++++++++++++++++++++++                  | 64% ~29s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~29s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~28s          
   |++++++++++++++++++++++++++++++++++                | 67% ~27s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~26s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~25s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~24s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~23s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~23s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~22s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~21s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~20s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~20s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~19s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~18s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++         | 80% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 20s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~03m 49s      
   |++                                                | 2 % ~03m 44s      
   |++                                                | 3 % ~03m 42s      
   |+++                                               | 4 % ~03m 39s      
   |+++                                               | 5 % ~03m 36s      
   |++++                                              | 6 % ~03m 33s      
   |++++                                              | 7 % ~03m 32s      
   |+++++                                             | 8 % ~03m 31s      
   |+++++                                             | 9 % ~03m 29s      
   |++++++                                            | 10% ~03m 28s      
   |++++++                                            | 11% ~03m 26s      
   |+++++++                                           | 12% ~03m 24s      
   |+++++++                                           | 13% ~03m 28s      
   |++++++++                                          | 14% ~03m 30s      
   |++++++++                                          | 15% ~03m 27s      
   |+++++++++                                         | 16% ~03m 24s      
   |+++++++++                                         | 17% ~03m 20s      
   |++++++++++                                        | 18% ~03m 22s      
   |++++++++++                                        | 19% ~03m 18s      
   |+++++++++++                                       | 20% ~03m 15s      
   |+++++++++++                                       | 21% ~03m 12s      
   |++++++++++++                                      | 22% ~03m 08s      
   |++++++++++++                                      | 23% ~03m 05s      
   |+++++++++++++                                     | 24% ~03m 04s      
   |+++++++++++++                                     | 25% ~03m 01s      
   |++++++++++++++                                    | 26% ~02m 58s      
   |++++++++++++++                                    | 27% ~02m 55s      
   |+++++++++++++++                                   | 28% ~02m 53s      
   |+++++++++++++++                                   | 29% ~02m 50s      
   |++++++++++++++++                                  | 30% ~02m 47s      
   |++++++++++++++++                                  | 31% ~02m 45s      
   |+++++++++++++++++                                 | 32% ~02m 42s      
   |+++++++++++++++++                                 | 33% ~02m 40s      
   |++++++++++++++++++                                | 34% ~02m 38s      
   |++++++++++++++++++                                | 35% ~02m 35s      
   |+++++++++++++++++++                               | 36% ~02m 33s      
   |+++++++++++++++++++                               | 37% ~02m 31s      
   |++++++++++++++++++++                              | 38% ~02m 29s      
   |++++++++++++++++++++                              | 39% ~02m 27s      
   |+++++++++++++++++++++                             | 40% ~02m 25s      
   |+++++++++++++++++++++                             | 41% ~02m 22s      
   |++++++++++++++++++++++                            | 42% ~02m 20s      
   |++++++++++++++++++++++                            | 43% ~02m 18s      
   |+++++++++++++++++++++++                           | 44% ~02m 15s      
   |+++++++++++++++++++++++                           | 45% ~02m 13s      
   |++++++++++++++++++++++++                          | 46% ~02m 11s      
   |++++++++++++++++++++++++                          | 47% ~02m 09s      
   |+++++++++++++++++++++++++                         | 48% ~02m 07s      
   |+++++++++++++++++++++++++                         | 49% ~02m 05s      
   |++++++++++++++++++++++++++                        | 51% ~02m 03s      
   |++++++++++++++++++++++++++                        | 52% ~01m 60s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 58s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 56s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 53s      
   |++++++++++++++++++++++++++++                      | 56% ~01m 51s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 48s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 46s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 43s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 41s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 39s      
   |+++++++++++++++++++++++++++++++                   | 62% ~01m 36s      
   |++++++++++++++++++++++++++++++++                  | 63% ~01m 34s      
   |++++++++++++++++++++++++++++++++                  | 64% ~01m 31s      
   |+++++++++++++++++++++++++++++++++                 | 65% ~01m 29s      
   |+++++++++++++++++++++++++++++++++                 | 66% ~01m 26s      
   |++++++++++++++++++++++++++++++++++                | 67% ~01m 24s      
   |++++++++++++++++++++++++++++++++++                | 68% ~01m 21s      
   |+++++++++++++++++++++++++++++++++++               | 69% ~01m 19s      
   |+++++++++++++++++++++++++++++++++++               | 70% ~01m 16s      
   |++++++++++++++++++++++++++++++++++++              | 71% ~01m 14s      
   |++++++++++++++++++++++++++++++++++++              | 72% ~01m 11s      
   |+++++++++++++++++++++++++++++++++++++             | 73% ~01m 09s      
Warning in scan(file = file, what = what, sep = sep, quote = quote, dec = dec,  :
  EOF within quoted string
Quitting from lines 56-58 (Bladder_Plate.Rmd) 

   |+++++++++++++++++++++++++++++++++++++             | 74% ~01m 06s      
   |++++++++++++++++++++++++++++++++++++++            | 75% ~01m 04s      
   |++++++++++++++++++++++++++++++++++++++            | 76% ~01m 01s      
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~59s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~57s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~54s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~52s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~49s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~47s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~44s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~42s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~39s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~37s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~34s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~32s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~29s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~26s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~24s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 04m 31s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 19s      
   |++                                                | 2 % ~02m 08s      
   |++                                                | 3 % ~02m 04s      
   |+++                                               | 4 % ~01m 60s      
   |+++                                               | 5 % ~01m 60s      
   |++++                                              | 6 % ~01m 57s      
   |++++                                              | 8 % ~01m 54s      
   |+++++                                             | 9 % ~01m 51s      
   |+++++                                             | 10% ~01m 49s      
   |++++++                                            | 11% ~01m 47s      
   |++++++                                            | 12% ~01m 45s      
   |+++++++                                           | 13% ~01m 44s      
   |+++++++                                           | 14% ~01m 42s      
   |++++++++                                          | 15% ~01m 41s      
   |+++++++++                                         | 16% ~01m 40s      
   |+++++++++                                         | 17% ~01m 39s      
   |++++++++++                                        | 18% ~01m 37s      
   |++++++++++                                        | 19% ~01m 36s      
   |+++++++++++                                       | 20% ~01m 34s      
   |+++++++++++                                       | 22% ~01m 33s      
   |++++++++++++                                      | 23% ~01m 32s      
   |++++++++++++                                      | 24% ~01m 30s      
   |+++++++++++++                                     | 25% ~01m 29s      
   |+++++++++++++                                     | 26% ~01m 28s      
   |++++++++++++++                                    | 27% ~01m 27s      
   |++++++++++++++                                    | 28% ~01m 25s      
   |+++++++++++++++                                   | 29% ~01m 24s      
   |++++++++++++++++                                  | 30% ~01m 24s      
   |++++++++++++++++                                  | 31% ~01m 24s      
   |+++++++++++++++++                                 | 32% ~01m 22s      
   |+++++++++++++++++                                 | 33% ~01m 21s      
   |++++++++++++++++++                                | 34% ~01m 19s      
   |++++++++++++++++++                                | 35% ~01m 18s      
   |+++++++++++++++++++                               | 37% ~01m 16s      
   |+++++++++++++++++++                               | 38% ~01m 15s      
   |++++++++++++++++++++                              | 39% ~01m 13s      
   |++++++++++++++++++++                              | 40% ~01m 12s      
   |+++++++++++++++++++++                             | 41% ~01m 11s      
   |+++++++++++++++++++++                             | 42% ~01m 09s      
   |++++++++++++++++++++++                            | 43% ~01m 08s      
   |+++++++++++++++++++++++                           | 44% ~01m 07s      
   |+++++++++++++++++++++++                           | 45% ~01m 05s      
   |++++++++++++++++++++++++                          | 46% ~01m 04s      
   |++++++++++++++++++++++++                          | 47% ~01m 03s      
   |+++++++++++++++++++++++++                         | 48% ~01m 01s      
   |+++++++++++++++++++++++++                         | 49% ~60s          
   |++++++++++++++++++++++++++                        | 51% ~59s          
   |++++++++++++++++++++++++++                        | 52% ~57s          
   |+++++++++++++++++++++++++++                       | 53% ~56s          
   |+++++++++++++++++++++++++++                       | 54% ~54s          
   |++++++++++++++++++++++++++++                      | 55% ~53s          
   |++++++++++++++++++++++++++++                      | 56% ~52s          
   |+++++++++++++++++++++++++++++                     | 57% ~50s          
   |++++++++++++++++++++++++++++++                    | 58% ~49s          
   |++++++++++++++++++++++++++++++                    | 59% ~47s          
   |+++++++++++++++++++++++++++++++                   | 60% ~46s          
   |+++++++++++++++++++++++++++++++                   | 61% ~45s          
   |++++++++++++++++++++++++++++++++                  | 62% ~43s          
   |++++++++++++++++++++++++++++++++                  | 63% ~42s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~41s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~39s          
   |++++++++++++++++++++++++++++++++++                | 67% ~38s          
   |++++++++++++++++++++++++++++++++++                | 68% ~36s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~35s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~34s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~33s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~31s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~30s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~29s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~28s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~26s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~25s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~24s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~20s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~07s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 51s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 48s      
   |++                                                | 2 % ~01m 46s      
   |++                                                | 3 % ~01m 43s      
   |+++                                               | 4 % ~01m 44s      
   |+++                                               | 5 % ~01m 44s      
   |++++                                              | 6 % ~01m 43s      
   |++++                                              | 7 % ~01m 42s      
   |+++++                                             | 8 % ~01m 44s      
   |+++++                                             | 9 % ~01m 43s      
   |++++++                                            | 11% ~01m 42s      
   |++++++                                            | 12% ~01m 41s      
   |+++++++                                           | 13% ~01m 42s      
   |+++++++                                           | 14% ~01m 42s      
   |++++++++                                          | 15% ~01m 41s      
   |++++++++                                          | 16% ~01m 41s      
   |+++++++++                                         | 17% ~01m 41s      
   |+++++++++                                         | 18% ~01m 40s      
   |++++++++++                                        | 19% ~01m 38s      
   |++++++++++                                        | 20% ~01m 37s      
   |+++++++++++                                       | 21% ~01m 35s      
   |++++++++++++                                      | 22% ~01m 33s      
   |++++++++++++                                      | 23% ~01m 32s      
   |+++++++++++++                                     | 24% ~01m 30s      
   |+++++++++++++                                     | 25% ~01m 29s      
   |++++++++++++++                                    | 26% ~01m 28s      
   |++++++++++++++                                    | 27% ~01m 26s      
   |+++++++++++++++                                   | 28% ~01m 25s      
   |+++++++++++++++                                   | 29% ~01m 23s      
   |++++++++++++++++                                  | 31% ~01m 21s      
   |++++++++++++++++                                  | 32% ~01m 20s      
   |+++++++++++++++++                                 | 33% ~01m 18s      
   |+++++++++++++++++                                 | 34% ~01m 17s      
   |++++++++++++++++++                                | 35% ~01m 16s      
   |++++++++++++++++++                                | 36% ~01m 14s      
   |+++++++++++++++++++                               | 37% ~01m 13s      
   |+++++++++++++++++++                               | 38% ~01m 11s      
   |++++++++++++++++++++                              | 39% ~01m 10s      
   |++++++++++++++++++++                              | 40% ~01m 09s      
   |+++++++++++++++++++++                             | 41% ~01m 07s      
   |++++++++++++++++++++++                            | 42% ~01m 06s      
   |++++++++++++++++++++++                            | 43% ~01m 05s      
   |+++++++++++++++++++++++                           | 44% ~01m 03s      
   |+++++++++++++++++++++++                           | 45% ~01m 02s      
   |++++++++++++++++++++++++                          | 46% ~01m 00s      
   |++++++++++++++++++++++++                          | 47% ~59s          
   |+++++++++++++++++++++++++                         | 48% ~57s          
   |+++++++++++++++++++++++++                         | 49% ~56s          
   |++++++++++++++++++++++++++                        | 51% ~54s          
   |++++++++++++++++++++++++++                        | 52% ~53s          
   |+++++++++++++++++++++++++++                       | 53% ~52s          
   |+++++++++++++++++++++++++++                       | 54% ~50s          
   |++++++++++++++++++++++++++++                      | 55% ~49s          
   |++++++++++++++++++++++++++++                      | 56% ~48s          
   |+++++++++++++++++++++++++++++                     | 57% ~46s          
   |+++++++++++++++++++++++++++++                     | 58% ~45s          
   |++++++++++++++++++++++++++++++                    | 59% ~44s          
   |++++++++++++++++++++++++++++++                    | 60% ~43s          
   |+++++++++++++++++++++++++++++++                   | 61% ~41s          
   |++++++++++++++++++++++++++++++++                  | 62% ~40s          
   |++++++++++++++++++++++++++++++++                  | 63% ~39s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~38s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~36s          
   |++++++++++++++++++++++++++++++++++                | 66% ~35s          
   |++++++++++++++++++++++++++++++++++                | 67% ~34s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~33s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~32s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~31s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~29s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~28s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~27s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~26s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~25s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~24s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~23s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~21s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~15s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~12s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~10s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~03s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01m 40s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02m 13s      
   |++                                                | 2 % ~02m 15s      
   |++                                                | 3 % ~02m 30s      
   |+++                                               | 4 % ~02m 33s      
   |+++                                               | 5 % ~02m 34s      
   |++++                                              | 6 % ~02m 37s      
   |++++                                              | 7 % ~02m 34s      
   |+++++                                             | 8 % ~02m 33s      
   |+++++                                             | 9 % ~02m 30s      
   |++++++                                            | 11% ~02m 27s      
   |++++++                                            | 12% ~02m 24s      
   |+++++++                                           | 13% ~02m 20s      
   |+++++++                                           | 14% ~02m 18s      
   |++++++++                                          | 15% ~02m 17s      
   |++++++++                                          | 16% ~02m 15s      
   |+++++++++                                         | 17% ~02m 14s      
   |+++++++++                                         | 18% ~02m 14s      
   |++++++++++                                        | 19% ~02m 14s      
   |++++++++++                                        | 20% ~02m 15s      
   |+++++++++++                                       | 21% ~02m 15s      
   |++++++++++++                                      | 22% ~02m 14s      
   |++++++++++++                                      | 23% ~02m 13s      
   |+++++++++++++                                     | 24% ~02m 12s      
   |+++++++++++++                                     | 25% ~02m 10s      
   |++++++++++++++                                    | 26% ~02m 09s      
   |++++++++++++++                                    | 27% ~02m 09s      
   |+++++++++++++++                                   | 28% ~02m 07s      
   |+++++++++++++++                                   | 29% ~02m 06s      
   |++++++++++++++++                                  | 31% ~02m 05s      
   |++++++++++++++++                                  | 32% ~02m 04s      
   |+++++++++++++++++                                 | 33% ~02m 02s      
   |+++++++++++++++++                                 | 34% ~02m 01s      
   |++++++++++++++++++                                | 35% ~01m 60s      
   |++++++++++++++++++                                | 36% ~01m 59s      
   |+++++++++++++++++++                               | 37% ~01m 57s      
   |+++++++++++++++++++                               | 38% ~01m 56s      
   |++++++++++++++++++++                              | 39% ~01m 54s      
   |++++++++++++++++++++                              | 40% ~01m 53s      
   |+++++++++++++++++++++                             | 41% ~01m 51s      
   |++++++++++++++++++++++                            | 42% ~01m 50s      
   |++++++++++++++++++++++                            | 43% ~01m 49s      
   |+++++++++++++++++++++++                           | 44% ~01m 47s      
   |+++++++++++++++++++++++                           | 45% ~01m 45s      
   |++++++++++++++++++++++++                          | 46% ~01m 43s      
   |++++++++++++++++++++++++                          | 47% ~01m 42s      
   |+++++++++++++++++++++++++                         | 48% ~01m 41s      
   |+++++++++++++++++++++++++                         | 49% ~01m 39s      
   |++++++++++++++++++++++++++                        | 51% ~01m 38s      
   |++++++++++++++++++++++++++                        | 52% ~01m 36s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 34s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 32s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 32s      
   |++++++++++++++++++++++++++++                      | 56% ~01m 30s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 28s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 26s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 24s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 22s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 20s      
   |++++++++++++++++++++++++++++++++                  | 62% ~01m 18s      
   |++++++++++++++++++++++++++++++++                  | 63% ~01m 16s      
   |+++++++++++++++++++++++++++++++++                 | 64% ~01m 14s      
   |+++++++++++++++++++++++++++++++++                 | 65% ~01m 13s      
   |++++++++++++++++++++++++++++++++++                | 66% ~01m 11s      
   |++++++++++++++++++++++++++++++++++                | 67% ~01m 09s      
   |+++++++++++++++++++++++++++++++++++               | 68% ~01m 07s      
   |+++++++++++++++++++++++++++++++++++               | 69% ~01m 06s      
   |++++++++++++++++++++++++++++++++++++              | 71% ~01m 04s      
   |++++++++++++++++++++++++++++++++++++              | 72% ~01m 02s      
   |+++++++++++++++++++++++++++++++++++++             | 73% ~60s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~58s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~56s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~53s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~51s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~49s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~46s          
   |++++++++++++++++++++++++++++++++++++++++         | 80% ~44s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~42s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~39s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~37s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~35s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~32s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~30s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~28s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~23s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~18s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~16s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~12s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~07s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~05s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 03m 39s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~03m 37s      
   |++                                                | 2 % ~03m 13s      
   |++                                                | 3 % ~03m 34s      
   |+++                                               | 4 % ~03m 12s      
   |+++                                               | 5 % ~03m 01s      
   |++++                                              | 6 % ~02m 51s      
   |++++                                              | 7 % ~02m 43s      
   |+++++                                             | 8 % ~02m 37s      
   |+++++                                             | 9 % ~02m 32s      
   |++++++                                            | 10% ~02m 29s      
   |++++++                                            | 11% ~02m 26s      
   |+++++++                                           | 12% ~02m 29s      
   |+++++++                                           | 13% ~02m 29s      
   |++++++++                                          | 14% ~02m 25s      
   |++++++++                                          | 15% ~02m 22s      
   |+++++++++                                         | 16% ~02m 19s      
   |+++++++++                                         | 18% ~02m 16s      
   |++++++++++                                        | 19% ~02m 13s      
   |++++++++++                                        | 20% ~02m 11s      
   |+++++++++++                                       | 21% ~02m 09s      
   |+++++++++++                                       | 22% ~02m 06s      
   |++++++++++++                                      | 23% ~02m 04s      
   |++++++++++++                                      | 24% ~02m 02s      
   |+++++++++++++                                     | 25% ~01m 59s      
   |+++++++++++++                                     | 26% ~01m 57s      
   |++++++++++++++                                    | 27% ~01m 55s      
   |++++++++++++++                                    | 28% ~01m 53s      
   |+++++++++++++++                                   | 29% ~01m 51s      
   |+++++++++++++++                                   | 30% ~01m 49s      
   |++++++++++++++++                                  | 31% ~01m 47s      
   |++++++++++++++++                                  | 32% ~01m 46s      
   |+++++++++++++++++                                 | 33% ~01m 44s      
   |++++++++++++++++++                                | 34% ~01m 42s      
   |++++++++++++++++++                                | 35% ~01m 40s      
   |+++++++++++++++++++                               | 36% ~01m 38s      
   |+++++++++++++++++++                               | 37% ~01m 37s      
   |++++++++++++++++++++                              | 38% ~01m 35s      
   |++++++++++++++++++++                              | 39% ~01m 34s      
   |+++++++++++++++++++++                             | 40% ~01m 32s      
   |+++++++++++++++++++++                             | 41% ~01m 30s      
   |++++++++++++++++++++++                            | 42% ~01m 29s      
   |++++++++++++++++++++++                            | 43% ~01m 27s      
   |+++++++++++++++++++++++                           | 44% ~01m 26s      
   |+++++++++++++++++++++++                           | 45% ~01m 26s      
   |++++++++++++++++++++++++                          | 46% ~01m 24s      
   |++++++++++++++++++++++++                          | 47% ~01m 23s      
   |+++++++++++++++++++++++++                         | 48% ~01m 21s      
   |+++++++++++++++++++++++++                         | 49% ~01m 19s      
   |++++++++++++++++++++++++++                        | 51% ~01m 17s      
   |++++++++++++++++++++++++++                        | 52% ~01m 15s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 14s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 13s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 12s      
   |++++++++++++++++++++++++++++                      | 56% ~01m 10s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 08s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 06s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 05s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 03s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 01s      
   |+++++++++++++++++++++++++++++++                   | 62% ~60s          
   |++++++++++++++++++++++++++++++++                  | 63% ~58s          
   |++++++++++++++++++++++++++++++++                  | 64% ~56s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~55s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~53s          
   |++++++++++++++++++++++++++++++++++                | 67% ~52s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~50s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~48s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~47s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~45s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~44s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~42s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~40s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~39s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~37s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~35s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~34s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~32s          
   |+++++++++++++++++++++++++++++++++++++++++         | 80% ~30s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~29s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~27s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~26s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~24s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~22s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~17s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~14s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~11s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 31s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~03m 10s      
   |++                                                | 2 % ~03m 08s      
   |++                                                | 3 % ~03m 07s      
   |+++                                               | 4 % ~03m 03s      
   |+++                                               | 5 % ~03m 02s      
   |++++                                              | 6 % ~03m 02s      
   |++++                                              | 7 % ~03m 00s      
   |+++++                                             | 8 % ~02m 58s      
   |+++++                                             | 9 % ~02m 56s      
   |++++++                                            | 10% ~02m 54s      
   |++++++                                            | 11% ~02m 53s      
   |+++++++                                           | 12% ~02m 52s      
   |+++++++                                           | 13% ~02m 50s      
   |++++++++                                          | 14% ~02m 49s      
   |++++++++                                          | 15% ~02m 46s      
   |+++++++++                                         | 16% ~02m 45s      
   |+++++++++                                         | 17% ~02m 44s      
   |++++++++++                                        | 18% ~02m 42s      
   |++++++++++                                        | 19% ~02m 40s      
   |+++++++++++                                       | 20% ~02m 37s      
   |+++++++++++                                       | 21% ~02m 35s      
   |++++++++++++                                      | 22% ~02m 33s      
   |++++++++++++                                      | 23% ~02m 32s      
   |+++++++++++++                                     | 24% ~02m 30s      
   |+++++++++++++                                     | 25% ~02m 30s      
   |++++++++++++++                                    | 26% ~02m 28s      
   |++++++++++++++                                    | 27% ~02m 27s      
   |+++++++++++++++                                   | 28% ~02m 25s      
   |+++++++++++++++                                   | 29% ~02m 23s      
   |++++++++++++++++                                  | 30% ~02m 21s      
   |++++++++++++++++                                  | 31% ~02m 19s      
   |+++++++++++++++++                                 | 32% ~02m 17s      
   |+++++++++++++++++                                 | 33% ~02m 15s      
   |++++++++++++++++++                                | 34% ~02m 13s      
   |++++++++++++++++++                                | 35% ~02m 11s      
   |+++++++++++++++++++                               | 36% ~02m 09s      
   |+++++++++++++++++++                               | 37% ~02m 07s      
   |++++++++++++++++++++                              | 38% ~02m 05s      
   |++++++++++++++++++++                              | 39% ~02m 03s      
   |+++++++++++++++++++++                             | 40% ~02m 01s      
   |+++++++++++++++++++++                             | 41% ~01m 60s      
   |++++++++++++++++++++++                            | 42% ~01m 57s      
   |++++++++++++++++++++++                            | 43% ~01m 55s      
   |+++++++++++++++++++++++                           | 44% ~01m 53s      
   |+++++++++++++++++++++++                           | 45% ~01m 51s      
   |++++++++++++++++++++++++                          | 46% ~01m 49s      
   |++++++++++++++++++++++++                          | 47% ~01m 47s      
   |+++++++++++++++++++++++++                         | 48% ~01m 46s      
   |+++++++++++++++++++++++++                         | 49% ~01m 44s      
   |++++++++++++++++++++++++++                        | 51% ~01m 41s      
   |++++++++++++++++++++++++++                        | 52% ~01m 39s      
   |+++++++++++++++++++++++++++                       | 53% ~01m 37s      
   |+++++++++++++++++++++++++++                       | 54% ~01m 35s      
   |++++++++++++++++++++++++++++                      | 55% ~01m 33s      
   |++++++++++++++++++++++++++++                      | 56% ~01m 30s      
   |+++++++++++++++++++++++++++++                     | 57% ~01m 28s      
   |+++++++++++++++++++++++++++++                     | 58% ~01m 26s      
   |++++++++++++++++++++++++++++++                    | 59% ~01m 24s      
   |++++++++++++++++++++++++++++++                    | 60% ~01m 21s      
   |+++++++++++++++++++++++++++++++                   | 61% ~01m 19s      
   |+++++++++++++++++++++++++++++++                   | 62% ~01m 17s      
   |++++++++++++++++++++++++++++++++                  | 63% ~01m 15s      
   |++++++++++++++++++++++++++++++++                  | 64% ~01m 12s      
   |+++++++++++++++++++++++++++++++++                 | 65% ~01m 10s      
   |+++++++++++++++++++++++++++++++++                 | 66% ~01m 08s      
   |++++++++++++++++++++++++++++++++++                | 67% ~01m 06s      
   |++++++++++++++++++++++++++++++++++                | 68% ~01m 04s      
   |+++++++++++++++++++++++++++++++++++               | 69% ~01m 02s      
   |+++++++++++++++++++++++++++++++++++               | 70% ~60s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~58s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~56s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~53s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~51s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~49s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~47s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~45s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~43s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~41s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~39s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~37s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~35s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~33s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~31s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~29s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~27s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~25s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~23s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~21s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~19s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~13s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~09s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~08s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~06s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~04s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~02s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 03m 04s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 51s      
   |++                                                | 2 % ~01m 47s      
   |++                                                | 3 % ~01m 46s      
   |+++                                               | 4 % ~01m 45s      
   |+++                                               | 5 % ~01m 45s      
   |++++                                              | 6 % ~01m 43s      
   |++++                                              | 7 % ~01m 42s      
   |+++++                                             | 8 % ~01m 41s      
   |+++++                                             | 9 % ~01m 40s      
   |++++++                                            | 10% ~01m 39s      
   |++++++                                            | 11% ~01m 38s      
   |+++++++                                           | 12% ~01m 37s      
   |+++++++                                           | 13% ~01m 36s      
   |++++++++                                          | 14% ~01m 34s      
   |++++++++                                          | 15% ~01m 33s      
   |+++++++++                                         | 16% ~01m 32s      
   |+++++++++                                         | 17% ~01m 31s      
   |++++++++++                                        | 18% ~01m 30s      
   |++++++++++                                        | 19% ~01m 29s      
   |+++++++++++                                       | 20% ~01m 28s      
   |+++++++++++                                       | 21% ~01m 27s      
   |++++++++++++                                      | 22% ~01m 26s      
   |++++++++++++                                      | 23% ~01m 25s      
   |+++++++++++++                                     | 24% ~01m 24s      
   |+++++++++++++                                     | 25% ~01m 23s      
   |++++++++++++++                                    | 26% ~01m 22s      
   |++++++++++++++                                    | 27% ~01m 20s      
   |+++++++++++++++                                   | 28% ~01m 19s      
   |+++++++++++++++                                   | 29% ~01m 18s      
   |++++++++++++++++                                  | 30% ~01m 17s      
   |++++++++++++++++                                  | 31% ~01m 16s      
   |+++++++++++++++++                                 | 32% ~01m 15s      
   |+++++++++++++++++                                 | 33% ~01m 14s      
   |++++++++++++++++++                                | 34% ~01m 13s      
   |++++++++++++++++++                                | 35% ~01m 12s      
   |+++++++++++++++++++                               | 36% ~01m 11s      
   |+++++++++++++++++++                               | 37% ~01m 10s      
   |++++++++++++++++++++                              | 38% ~01m 09s      
   |++++++++++++++++++++                              | 39% ~01m 09s      
   |+++++++++++++++++++++                             | 40% ~01m 07s      
   |+++++++++++++++++++++                             | 41% ~01m 07s      
   |++++++++++++++++++++++                            | 42% ~01m 06s      
   |++++++++++++++++++++++                            | 43% ~01m 05s      
   |+++++++++++++++++++++++                           | 44% ~01m 04s      
   |+++++++++++++++++++++++                           | 45% ~01m 03s      
   |++++++++++++++++++++++++                          | 46% ~01m 01s      
   |++++++++++++++++++++++++                          | 47% ~01m 00s      
   |+++++++++++++++++++++++++                         | 48% ~59s          
   |+++++++++++++++++++++++++                         | 49% ~58s          
   |++++++++++++++++++++++++++                        | 51% ~57s          
   |++++++++++++++++++++++++++                        | 52% ~56s          
   |+++++++++++++++++++++++++++                       | 53% ~56s          
   |+++++++++++++++++++++++++++                       | 54% ~54s          
   |++++++++++++++++++++++++++++                      | 55% ~53s          
   |++++++++++++++++++++++++++++                      | 56% ~52s          
   |+++++++++++++++++++++++++++++                     | 57% ~51s          
   |+++++++++++++++++++++++++++++                     | 58% ~50s          
   |++++++++++++++++++++++++++++++                    | 59% ~48s          
   |++++++++++++++++++++++++++++++                    | 60% ~47s          
   |+++++++++++++++++++++++++++++++                   | 61% ~46s          
   |+++++++++++++++++++++++++++++++                   | 62% ~45s          
   |++++++++++++++++++++++++++++++++                  | 63% ~43s          
   |++++++++++++++++++++++++++++++++                  | 64% ~42s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~41s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~40s          
   |++++++++++++++++++++++++++++++++++                | 67% ~39s          
   |++++++++++++++++++++++++++++++++++                | 68% ~38s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~37s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~36s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~35s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~35s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~34s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~33s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~32s          
   |++++++++++++++++++++++++++++++++++++++            | 76% ~30s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~29s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~28s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~27s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~24s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~23s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~21s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~16s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 05s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01m 51s      
   |++                                                | 2 % ~01m 54s      
   |++                                                | 3 % ~01m 55s      
   |+++                                               | 4 % ~01m 53s      
   |+++                                               | 5 % ~01m 53s      
   |++++                                              | 6 % ~01m 54s      
   |++++                                              | 7 % ~01m 56s      
   |+++++                                             | 8 % ~01m 56s      
   |+++++                                             | 9 % ~01m 57s      
   |++++++                                            | 10% ~01m 56s      
   |++++++                                            | 11% ~01m 54s      
   |+++++++                                           | 12% ~01m 52s      
   |+++++++                                           | 13% ~01m 51s      
   |++++++++                                          | 14% ~01m 51s      
   |++++++++                                          | 15% ~01m 51s      
   |+++++++++                                         | 16% ~01m 50s      
   |+++++++++                                         | 18% ~01m 48s      
   |++++++++++                                        | 19% ~01m 46s      
   |++++++++++                                        | 20% ~01m 44s      
   |+++++++++++                                       | 21% ~01m 42s      
   |+++++++++++                                       | 22% ~01m 40s      
   |++++++++++++                                      | 23% ~01m 39s      
   |++++++++++++                                      | 24% ~01m 37s      
   |+++++++++++++                                     | 25% ~01m 35s      
   |+++++++++++++                                     | 26% ~01m 34s      
   |++++++++++++++                                    | 27% ~01m 33s      
   |++++++++++++++                                    | 28% ~01m 31s      
   |+++++++++++++++                                   | 29% ~01m 30s      
   |+++++++++++++++                                   | 30% ~01m 29s      
   |++++++++++++++++                                  | 31% ~01m 27s      
   |++++++++++++++++                                  | 32% ~01m 26s      
   |+++++++++++++++++                                 | 33% ~01m 24s      
   |++++++++++++++++++                                | 34% ~01m 23s      
   |++++++++++++++++++                                | 35% ~01m 22s      
   |+++++++++++++++++++                               | 36% ~01m 20s      
   |+++++++++++++++++++                               | 37% ~01m 18s      
   |++++++++++++++++++++                              | 38% ~01m 17s      
   |++++++++++++++++++++                              | 39% ~01m 16s      
   |+++++++++++++++++++++                             | 40% ~01m 14s      
   |+++++++++++++++++++++                             | 41% ~01m 13s      
   |++++++++++++++++++++++                            | 42% ~01m 12s      
   |++++++++++++++++++++++                            | 43% ~01m 10s      
   |+++++++++++++++++++++++                           | 44% ~01m 09s      
   |+++++++++++++++++++++++                           | 45% ~01m 07s      
   |++++++++++++++++++++++++                          | 46% ~01m 06s      
   |++++++++++++++++++++++++                          | 47% ~01m 05s      
   |+++++++++++++++++++++++++                         | 48% ~01m 03s      
   |+++++++++++++++++++++++++                         | 49% ~01m 02s      
   |++++++++++++++++++++++++++                        | 51% ~01m 01s      
   |++++++++++++++++++++++++++                        | 52% ~59s          
   |+++++++++++++++++++++++++++                       | 53% ~58s          
   |+++++++++++++++++++++++++++                       | 54% ~57s          
   |++++++++++++++++++++++++++++                      | 55% ~56s          
   |++++++++++++++++++++++++++++                      | 56% ~55s          
   |+++++++++++++++++++++++++++++                     | 57% ~53s          
   |+++++++++++++++++++++++++++++                     | 58% ~52s          
   |++++++++++++++++++++++++++++++                    | 59% ~51s          
   |++++++++++++++++++++++++++++++                    | 60% ~49s          
   |+++++++++++++++++++++++++++++++                   | 61% ~48s          
   |+++++++++++++++++++++++++++++++                   | 62% ~47s          
   |++++++++++++++++++++++++++++++++                  | 63% ~45s          
   |++++++++++++++++++++++++++++++++                  | 64% ~44s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~43s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~41s          
   |++++++++++++++++++++++++++++++++++                | 67% ~40s          
   |+++++++++++++++++++++++++++++++++++               | 68% ~39s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~38s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~36s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~35s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~34s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~33s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~31s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~30s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~29s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~28s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~26s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~25s          
   |+++++++++++++++++++++++++++++++++++++++++         | 80% ~24s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~23s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~22s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~20s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~19s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~18s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~17s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~15s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~14s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~13s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~11s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~10s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~09s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~08s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~06s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~05s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~04s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~03s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~01s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02m 04s
head(tiss.markers)

Display the top markers you computed above.

tiss.markers %>% group_by(cluster) %>% top_n(5, avg_diff)

Assigning cell type identity to clusters

At a coarse level, we can use canonical markers to match the unbiased clustering to known cell types:

0: alpha 1: beta 2: beta 3: exocrine 4: duct 5: delta 6: gamma 7: endothelial 8: immune 9: stellate

# stash current cluster IDs
tiss <- StashIdent(object = tiss, save.name = "cluster.ids")
# enumerate current cluster IDs and the labels for them
cluster.ids <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
annotation <- c("hematopoietic stem cell", "B cell", "B cell", "neutrophil", "granulocyte", "monocyte", "B cell", "T_NK", "neutrophil", "Fraction A pre-pro B cell", "hematopoietic stem cell")
cell_ontology_id <- c("CL:0000037", "CL:0000236", "CL:0000236", "CL:0000775", "CL:0000094", "CL:0000576", "CL:0000236", NA, "CL:0000775", "CL:0002045", "CL:0000037")
  
tiss@meta.data[,'annotation'] <- plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = annotation)
The following `from` values were not present in `x`: 10
tiss@meta.data[,'cell_ontology_id'] <- plyr::mapvalues(x = tiss@ident, from = cluster.ids, to = cell_ontology_id)
The following `from` values were not present in `x`: 10
tiss@meta.data[tiss@cell.names,'annotation'] <- as.character(tiss@meta.data$annotation)
tiss@meta.data[tiss@cell.names,'cell_ontology_id'] <- as.character(tiss@meta.data$cell_ontology_id)
TSNEPlot(object = tiss, do.label = TRUE, pt.size = 0.5, group.by='annotation')

Checking for batch effects

Color by metadata, like plate barcode, to check for batch effects.

TSNEPlot(object = tiss, do.return = TRUE, group.by = "plate.barcode")

Print a table showing the count of cells in each identity category from each plate.

table(as.character(tiss@ident), as.character(tiss@meta.data$plate.barcode))
   
    D041912 D042044 D042193 D042467 D042479 D045139 D045140 MAA000409 MAA000596 MAA000600 MAA000639 MAA000652 MAA000844 MAA000848
  0       0       1       1       3       1       0       1         1       215       194         0         0         0       321
  1       0     103      87      30      97       0       0         0         0         0         0       166       101         0
  2     143       2       5       1       1      66     142       211         0         3       179         4         7         0
  3       2      88     106      44      52       0       1         0         1         2         0        47        67         0
  4      48       1       8       3       3      43      60        51         0         0        45         0         7         0
  5       0      79       9       3      76       0       0         0         1         0         0        42        10         0
  6       6       0      74      38       3       3       1         1         0         0         0         0        65         0
  7      69       0       2       0       0      15      10        58         0         0        46         1         2         0
  8       2      31       2       2      15       0       0         0         0         0         0        39        10         0
  9       0       0       1       0       0       0       0         0        65        47         0         0         0        28
   
    MAA001842 MAA001844 MAA001883 MAA001884 MAA001887 MAA001888
  0         2       187         0         0       208         2
  1         9         1       147       114         1         7
  2         0         2         0         0         3         1
  3        35         6        37       178         5        29
  4         2        28         0         1        16         8
  5         2         1        36        17         7         2
  6         4         3         2         1         0        77
  7         0         3         0         0         4         0
  8         1         0        26        37         0        12
  9         0         6         0         0         5         1

Subset and iterate

We can repeat the above analysis on a subset of cells, defined using cluster IDs or some other metadata. This is a good way to drill down and find substructure.

Subset == T and NK cells (Cluster 7)

# Subset data based on cluster id
subtiss7 <- SubsetData(object = tiss, ident.use = c(7), do.center = F, do.scale = F, cells.use = )
# To subset data based on annotation or other metadata, you can explicitly pass cell names
# anno = 'exocrine cells'
# cells.to.use = tiss@cell.names[which(tiss@meta.data$annotation == anno)]
# subtiss7 <- SubsetData(object = tiss, cells.use = cells.to.use, do.center = F, do.scale = F)
subtiss7 <- NormalizeData(object = subtiss7)
Performing log-normalization
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|
subtiss7 <- ScaleData(object = subtiss7, vars.to.regress = c("nReads", "percent.ribo","Rn45s"))
[1] "Regressing out nReads"       "Regressing out percent.ribo" "Regressing out Rn45s"       

  |                                                                                                                              
  |                                                                                                                        |   0%
  |                                                                                                                              
  |=                                                                                                                       |   1%
  |                                                                                                                              
  |==                                                                                                                      |   2%
  |                                                                                                                              
  |===                                                                                                                     |   2%
  |                                                                                                                              
  |===                                                                                                                     |   3%
  |                                                                                                                              
  |====                                                                                                                    |   3%
  |                                                                                                                              
  |=====                                                                                                                   |   4%
  |                                                                                                                              
  |=====                                                                                                                   |   5%
  |                                                                                                                              
  |======                                                                                                                  |   5%
  |                                                                                                                              
  |=======                                                                                                                 |   6%
  |                                                                                                                              
  |========                                                                                                                |   6%
  |                                                                                                                              
  |========                                                                                                                |   7%
  |                                                                                                                              
  |=========                                                                                                               |   7%
  |                                                                                                                              
  |==========                                                                                                              |   8%
  |                                                                                                                              
  |==========                                                                                                              |   9%
  |                                                                                                                              
  |===========                                                                                                             |   9%
  |                                                                                                                              
  |============                                                                                                            |  10%
  |                                                                                                                              
  |=============                                                                                                           |  11%
  |                                                                                                                              
  |==============                                                                                                          |  11%
  |                                                                                                                              
  |==============                                                                                                          |  12%
  |                                                                                                                              
  |===============                                                                                                         |  13%
  |                                                                                                                              
  |================                                                                                                        |  13%
  |                                                                                                                              
  |================                                                                                                        |  14%
  |                                                                                                                              
  |=================                                                                                                       |  14%
  |                                                                                                                              
  |==================                                                                                                      |  15%
  |                                                                                                                              
  |===================                                                                                                     |  15%
  |                                                                                                                              
  |===================                                                                                                     |  16%
  |                                                                                                                              
  |====================                                                                                                    |  17%
  |                                                                                                                              
  |=====================                                                                                                   |  17%
  |                                                                                                                              
  |=====================                                                                                                   |  18%
  |                                                                                                                              
  |======================                                                                                                  |  18%
  |                                                                                                                              
  |=======================                                                                                                 |  19%
  |                                                                                                                              
  |========================                                                                                                |  20%
  |                                                                                                                              
  |=========================                                                                                               |  21%
  |                                                                                                                              
  |==========================                                                                                              |  22%
  |                                                                                                                              
  |===========================                                                                                             |  22%
  |                                                                                                                              
  |===========================                                                                                             |  23%
  |                                                                                                                              
  |============================                                                                                            |  23%
  |                                                                                                                              
  |=============================                                                                                           |  24%
  |                                                                                                                              
  |=============================                                                                                           |  25%
  |                                                                                                                              
  |==============================                                                                                          |  25%
  |                                                                                                                              
  |===============================                                                                                         |  26%
  |                                                                                                                              
  |================================                                                                                        |  26%
  |                                                                                                                              
  |================================                                                                                        |  27%
  |                                                                                                                              
  |=================================                                                                                       |  27%
  |                                                                                                                              
  |==================================                                                                                      |  28%
  |                                                                                                                              
  |==================================                                                                                      |  29%
  |                                                                                                                              
  |===================================                                                                                     |  29%
  |                                                                                                                              
  |====================================                                                                                    |  30%
  |                                                                                                                              
  |=====================================                                                                                   |  31%
  |                                                                                                                              
  |======================================                                                                                  |  31%
  |                                                                                                                              
  |======================================                                                                                  |  32%
  |                                                                                                                              
  |=======================================                                                                                 |  33%
  |                                                                                                                              
  |========================================                                                                                |  33%
  |                                                                                                                              
  |========================================                                                                                |  34%
  |                                                                                                                              
  |=========================================                                                                               |  34%
  |                                                                                                                              
  |==========================================                                                                              |  35%
  |                                                                                                                              
  |===========================================                                                                             |  35%
  |                                                                                                                              
  |===========================================                                                                             |  36%
  |                                                                                                                              
  |============================================                                                                            |  37%
  |                                                                                                                              
  |=============================================                                                                           |  37%
  |                                                                                                                              
  |=============================================                                                                           |  38%
  |                                                                                                                              
  |==============================================                                                                          |  38%
  |                                                                                                                              
  |===============================================                                                                         |  39%
  |                                                                                                                              
  |================================================                                                                        |  40%
  |                                                                                                                              
  |=================================================                                                                       |  41%
  |                                                                                                                              
  |==================================================                                                                      |  42%
  |                                                                                                                              
  |===================================================                                                                     |  42%
  |                                                                                                                              
  |===================================================                                                                     |  43%
  |                                                                                                                              
  |====================================================                                                                    |  43%
  |                                                                                                                              
  |=====================================================                                                                   |  44%
  |                                                                                                                              
  |=====================================================                                                                   |  45%
  |                                                                                                                              
  |======================================================                                                                  |  45%
  |                                                                                                                              
  |=======================================================                                                                 |  46%
  |                                                                                                                              
  |========================================================                                                                |  46%
  |                                                                                                                              
  |========================================================                                                                |  47%
  |                                                                                                                              
  |=========================================================                                                               |  47%
  |                                                                                                                              
  |==========================================================                                                              |  48%
  |                                                                                                                              
  |==========================================================                                                              |  49%
  |                                                                                                                              
  |===========================================================                                                             |  49%
  |                                                                                                                              
  |============================================================                                                            |  50%
  |                                                                                                                              
  |=============================================================                                                           |  51%
  |                                                                                                                              
  |==============================================================                                                          |  51%
  |                                                                                                                              
  |==============================================================                                                          |  52%
  |                                                                                                                              
  |===============================================================                                                         |  53%
  |                                                                                                                              
  |================================================================                                                        |  53%
  |                                                                                                                              
  |================================================================                                                        |  54%
  |                                                                                                                              
  |=================================================================                                                       |  54%
  |                                                                                                                              
  |==================================================================                                                      |  55%
  |                                                                                                                              
  |===================================================================                                                     |  55%
  |                                                                                                                              
  |===================================================================                                                     |  56%
  |                                                                                                                              
  |====================================================================                                                    |  57%
  |                                                                                                                              
  |=====================================================================                                                   |  57%
  |                                                                                                                              
  |=====================================================================                                                   |  58%
  |                                                                                                                              
  |======================================================================                                                  |  58%
  |                                                                                                                              
  |=======================================================================                                                 |  59%
  |                                                                                                                              
  |========================================================================                                                |  60%
  |                                                                                                                              
  |=========================================================================                                               |  61%
  |                                                                                                                              
  |==========================================================================                                              |  62%
  |                                                                                                                              
  |===========================================================================                                             |  62%
  |                                                                                                                              
  |===========================================================================                                             |  63%
  |                                                                                                                              
  |============================================================================                                            |  63%
  |                                                                                                                              
  |=============================================================================                                           |  64%
  |                                                                                                                              
  |=============================================================================                                           |  65%
  |                                                                                                                              
  |==============================================================================                                          |  65%
  |                                                                                                                              
  |===============================================================================                                         |  66%
  |                                                                                                                              
  |================================================================================                                        |  66%
  |                                                                                                                              
  |================================================================================                                        |  67%
  |                                                                                                                              
  |=================================================================================                                       |  67%
  |                                                                                                                              
  |==================================================================================                                      |  68%
  |                                                                                                                              
  |==================================================================================                                      |  69%
  |                                                                                                                              
  |===================================================================================                                     |  69%
  |                                                                                                                              
  |====================================================================================                                    |  70%
  |                                                                                                                              
  |=====================================================================================                                   |  71%
  |                                                                                                                              
  |======================================================================================                                  |  71%
  |                                                                                                                              
  |======================================================================================                                  |  72%
  |                                                                                                                              
  |=======================================================================================                                 |  73%
  |                                                                                                                              
  |========================================================================================                                |  73%
  |                                                                                                                              
  |========================================================================================                                |  74%
  |                                                                                                                              
  |=========================================================================================                               |  74%
  |                                                                                                                              
  |==========================================================================================                              |  75%
  |                                                                                                                              
  |===========================================================================================                             |  75%
  |                                                                                                                              
  |===========================================================================================                             |  76%
  |                                                                                                                              
  |============================================================================================                            |  77%
  |                                                                                                                              
  |=============================================================================================                           |  77%
  |                                                                                                                              
  |=============================================================================================                           |  78%
  |                                                                                                                              
  |==============================================================================================                          |  78%
  |                                                                                                                              
  |===============================================================================================                         |  79%
  |                                                                                                                              
  |================================================================================================                        |  80%
  |                                                                                                                              
  |=================================================================================================                       |  81%
  |                                                                                                                              
  |==================================================================================================                      |  82%
  |                                                                                                                              
  |===================================================================================================                     |  82%
  |                                                                                                                              
  |===================================================================================================                     |  83%
  |                                                                                                                              
  |====================================================================================================                    |  83%
  |                                                                                                                              
  |=====================================================================================================                   |  84%
  |                                                                                                                              
  |=====================================================================================================                   |  85%
  |                                                                                                                              
  |======================================================================================================                  |  85%
  |                                                                                                                              
  |=======================================================================================================                 |  86%
  |                                                                                                                              
  |========================================================================================================                |  86%
  |                                                                                                                              
  |========================================================================================================                |  87%
  |                                                                                                                              
  |=========================================================================================================               |  87%
  |                                                                                                                              
  |==========================================================================================================              |  88%
  |                                                                                                                              
  |==========================================================================================================              |  89%
  |                                                                                                                              
  |===========================================================================================================             |  89%
  |                                                                                                                              
  |============================================================================================================            |  90%
  |                                                                                                                              
  |=============================================================================================================           |  91%
  |                                                                                                                              
  |==============================================================================================================          |  91%
  |                                                                                                                              
  |==============================================================================================================          |  92%
  |                                                                                                                              
  |===============================================================================================================         |  93%
  |                                                                                                                              
  |================================================================================================================        |  93%
  |                                                                                                                              
  |================================================================================================================        |  94%
  |                                                                                                                              
  |=================================================================================================================       |  94%
  |                                                                                                                              
  |==================================================================================================================      |  95%
  |                                                                                                                              
  |===================================================================================================================     |  95%
  |                                                                                                                              
  |===================================================================================================================     |  96%
  |                                                                                                                              
  |====================================================================================================================    |  97%
  |                                                                                                                              
  |=====================================================================================================================   |  97%
  |                                                                                                                              
  |=====================================================================================================================   |  98%
  |                                                                                                                              
  |======================================================================================================================  |  98%
  |                                                                                                                              
  |======================================================================================================================= |  99%
  |                                                                                                                              
  |========================================================================================================================| 100%
[1] "Scaling data matrix"

  |                                                                                                                              
  |                                                                                                                        |   0%
  |                                                                                                                              
  |========================================================================================================================| 100%
subtiss7 <- FindVariableGenes(object = subtiss7, do.plot = TRUE, x.high.cutoff = Inf, y.cutoff = 0.8)
Calculating gene means
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|
Calculating gene variance to mean ratios
0%   10   20   30   40   50   60   70   80   90   100%
|----|----|----|----|----|----|----|----|----|----|
**************************************************|

subtiss7 <- RunPCA(object = subtiss7, pcs.compute = 20)
[1] "PC1"
 [1] "Mcm6"    "Mcm3"    "Prtn3"   "Mcm4"    "Mcm7"    "Rrm1"    "Elane"   "Mcm2"    "Gstm1"   "Gatm"    "Rrm2"    "Pdia3"  
[13] "Uhrf1"   "Emilin1" "Man2b1"  "Sdha"    "Hat1"    "Eif3b"   "Spcs3"   "Srgn"    "Ampd2"   "Paics"   "Ctsg"    "Nkg7"   
[25] "Lrrc33"  "Rpa1"    "Ddx1"    "Lig1"    "Sdf2l1"  "Hspa9"  
[1] ""
 [1] "Cenpa"         "Malat1"        "Cenpf"         "Ube2c"         "Ifitm6"        "Cdc20"         "Slpi"         
 [8] "Plbd1"         "Ccnb1"         "Lgals3"        "Inhba"         "Ltf"           "Ifitm3"        "Aspm"         
[15] "Tubb4b"        "Cd74"          "Hn1"           "Ear2"          "Ly6a"          "Fam64a"        "St3gal5"      
[22] "Tuba1c"        "Ly6d"          "Txndc5"        "Ptprcap"       "Igj"           "Sh2d3c"        "Rdh12"        
[29] "2010001M09Rik" "Chi3l1"       
[1] ""
[1] ""
[1] "PC2"
 [1] "Plac8"         "Srgn"          "Elane"         "Tspan32"       "Ctsg"          "Bcat2"         "Cmtm7"        
 [8] "Prtn3"         "B4galnt1"      "Nkg7"          "Gstm1"         "Cdc20"         "Cst7"          "Clec12a"      
[15] "Ms4a3"         "Fcgr3"         "Ramp1"         "Cenpa"         "Prss57"        "Mcfd2"         "Calr"         
[22] "Etfb"          "Ptgr1"         "Pebp1"         "Idh1"          "1190002H23Rik" "Ccnb1"         "Vcam1"        
[29] "Ddx39"         "Farsa"        
[1] ""
 [1] "Hist1h4d"  "Hist1h1e"  "Hist1h2ab" "Rrm2"      "Ltf"       "Tyms"      "Smc6"      "Hist2h2ac" "Tcf19"     "Tubb5"    
[11] "Whsc1"     "Mthfd2"    "Nrm"       "Sod1"      "Atad2"     "Lig1"      "Syne2"     "Tipin"     "Pbk"       "Ccne1"    
[21] "Ncaph"     "Ccnf"      "Rbl1"      "Rfc2"      "Ccne2"     "Rpa1"      "Ncapd3"    "Trmt2b"    "Mapk13"    "Tubgcp2"  
[1] ""
[1] ""
[1] "PC3"
 [1] "Kpna2"   "Ccna2"   "Ube2c"   "Kif11"   "Tubb4b"  "Plk1"    "Tuba1c"  "Hiatl1"  "Aurka"   "Kif20a"  "Kif22"   "Ccnb1"  
[13] "Cenpf"   "Smtn"    "Bub1b"   "Plcg2"   "Csde1"   "Tpx2"    "Amfr"    "Atp2c1"  "Hn1"     "Ccnf"    "Ncaph"   "Tubb5"  
[25] "Cdc20"   "Cdca2"   "Slc40a1" "Slc28a2" "Slc2a3"  "Copg2"  
[1] ""
 [1] "Rpa2"          "Cdc6"          "Cdt1"          "Tcf19"         "Ftl1"          "Cdk4"          "Paics"        
 [8] "Gstm1"         "Hat1"          "C330006A16Rik" "Napsa"         "Chaf1b"        "Runx3"         "Akr1a1"       
[15] "Mcm3"          "Lig1"          "Rfc2"          "Dtl"           "Ctsh"          "Ube2g2"        "E2f1"         
[22] "5830415F09Rik" "Pold2"         "Ccne1"         "Slc25a5"       "Slc43a3"       "Npm1"          "Psmc3ip"      
[29] "Aldh9a1"       "Set"          
[1] ""
[1] ""
[1] "PC4"
 [1] "Srm"       "Nt5dc2"    "Hist2h2ac" "Ctsg"      "Hist1h1e"  "Hist1h2ab" "Hist1h4d"  "Galk1"     "Tmem97"    "Phgdh"    
[11] "Morf4l2"   "Calr"      "Ndc80"     "Ncl"       "C1qbp"     "Cst7"      "Pebp1"     "Set"       "Aurkb"     "Qdpr"     
[21] "Nrm"       "G6pc3"     "Fkbp4"     "Ppan"      "Idh2"      "Npm1"      "Mif"       "Pcgf5"     "Plbd1"     "Myb"      
[1] ""
 [1] "Gpx3"   "Ftl1"   "Rpsa"   "Rpl18a" "Cd177"  "Il1r2"  "Mcm2"   "Lrg1"   "Ccne2"  "Mcm6"   "Cxcr2"  "Dtl"    "Chi3l1" "Ikbke" 
[15] "Esyt1"  "Spp1"   "Mcm4"   "Scarb1" "Rplp0"  "Cdc6"   "Mpeg1"  "Ptgr1"  "Amfr"   "Csf2rb" "Man2b1" "Mcm3"   "Sirpa"  "Nt5c3" 
[29] "Eef1a1" "Slc2a3"
[1] ""
[1] ""
[1] "PC5"
 [1] "Ptprcap"       "Mif"           "Cd74"          "Hsp90b1"       "Ly6d"          "H2-Eb1"        "C1qbp"        
 [8] "Phgdh"         "Txndc5"        "Ly6e"          "Lgals3"        "Ifitm6"        "Plbd1"         "Ly6a"         
[15] "Herpud1"       "Sdf2l1"        "Gaa"           "Igj"           "Myb"           "2010001M09Rik" "Hspa5"        
[22] "Irf8"          "St3gal5"       "Myc"           "Creld2"        "Srm"           "Calr"          "Pdia4"        
[29] "Manf"          "Pdia6"        
[1] ""
 [1] "Nkg7"          "Elane"         "Prtn3"         "Rpl3"          "Hist1h4d"      "Fzr1"          "Hist1h1e"     
 [8] "Ms4a3"         "Rpl18a"        "Per3"          "Chit1"         "Hist2h2ac"     "Ldhb"          "Khk"          
[15] "Hmbs"          "Rpsa"          "Tubb5"         "Hist1h2ab"     "Ankle1"        "D030056L22Rik" "Nudt3"        
[22] "Ndc80"         "Mfsd10"        "Cdc20"         "Cenpa"         "Clec12a"       "Tmem127"       "Nt5c3"        
[29] "Tuba1c"        "Rnasel"       
[1] ""
[1] ""
subtiss7 <- ProjectPCA(object = subtiss7, do.print = FALSE)

Run Principal Component Analysis.

subtiss7 <- RunPCA(object = subtiss7, do.print = FALSE)
subtiss7 <- ProjectPCA(object = subtiss7, do.print = FALSE)
# If this fails for your subset, it may be that cells.use is more cells than you have left! Try reducing it.
PCHeatmap(object = subtiss7, pc.use = 1:3, cells.use = 250, do.balanced = TRUE, label.columns = FALSE, num.genes = 12)

Later on (in FindClusters and TSNE) you will pick a number of principal components to use. This has the effect of keeping the major directions of variation in the data and, ideally, supressing noise. There is no correct answer to the number to use, but a decent rule of thumb is to go until the plot plateaus.

PCElbowPlot(object = subtiss7)

Choose the number of principal components to use.

# Set number of principal components. 
sub7.n.pcs = 5

The clustering is performed based on a nearest neighbors graph. Cells that have similar expression will be joined together. The Louvain algorithm looks for groups of cells with high modularity–more connections within the group than between groups. The resolution parameter determines the scale…higher resolution will give more clusters, lower resolution will give fewer.

# Set resolution 
sub.res.used <- 1
subtiss7 <- FindClusters(object = subtiss7, reduction.type = "pca", dims.use = 1:sub7.n.pcs, 
    resolution = sub.res.used, print.output = 0, save.SNN = TRUE)

To visualize

# If cells are too spread out, you can raise the perplexity. If you have few cells, try a lower perplexity (but never less than 10).
subtiss7 <- RunTSNE(object = subtiss7, dims.use = 1:sub7.n.pcs, seed.use = 10, perplexity=30)
# note that you can set do.label=T to help label individual clusters
TSNEPlot(object = subtiss7, do.label = T)

subtiss7.markers <- FindAllMarkers(object = subtiss7, only.pos = TRUE, min.pct = 0.25, thresh.use = 0.25)

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~01s          
   |++                                                | 2 % ~01s          
   |++                                                | 3 % ~01s          
   |+++                                               | 4 % ~01s          
   |+++                                               | 5 % ~01s          
   |++++                                              | 6 % ~01s          
   |++++                                              | 8 % ~01s          
   |+++++                                             | 9 % ~01s          
   |+++++                                             | 10% ~01s          
   |++++++                                            | 11% ~01s          
   |++++++                                            | 12% ~01s          
   |+++++++                                           | 13% ~01s          
   |+++++++                                           | 14% ~01s          
   |++++++++                                          | 15% ~01s          
   |+++++++++                                         | 16% ~01s          
   |+++++++++                                         | 17% ~01s          
   |++++++++++                                        | 18% ~01s          
   |++++++++++                                        | 19% ~01s          
   |+++++++++++                                       | 20% ~01s          
   |+++++++++++                                       | 22% ~01s          
   |++++++++++++                                      | 23% ~01s          
   |++++++++++++                                      | 24% ~01s          
   |+++++++++++++                                     | 25% ~01s          
   |+++++++++++++                                     | 26% ~01s          
   |++++++++++++++                                    | 27% ~01s          
   |++++++++++++++                                    | 28% ~01s          
   |+++++++++++++++                                   | 29% ~01s          
   |++++++++++++++++                                  | 30% ~01s          
   |++++++++++++++++                                  | 31% ~01s          
   |+++++++++++++++++                                 | 32% ~01s          
   |+++++++++++++++++                                 | 33% ~01s          
   |++++++++++++++++++                                | 34% ~01s          
   |++++++++++++++++++                                | 35% ~01s          
   |+++++++++++++++++++                               | 37% ~01s          
   |+++++++++++++++++++                               | 38% ~01s          
   |++++++++++++++++++++                              | 39% ~01s          
   |++++++++++++++++++++                              | 40% ~01s          
   |+++++++++++++++++++++                             | 41% ~01s          
   |+++++++++++++++++++++                             | 42% ~01s          
   |++++++++++++++++++++++                            | 43% ~01s          
   |+++++++++++++++++++++++                           | 44% ~01s          
   |+++++++++++++++++++++++                           | 45% ~01s          
   |++++++++++++++++++++++++                          | 46% ~01s          
   |++++++++++++++++++++++++                          | 47% ~01s          
   |+++++++++++++++++++++++++                         | 48% ~01s          
   |+++++++++++++++++++++++++                         | 49% ~01s          
   |++++++++++++++++++++++++++                        | 51% ~01s          
   |++++++++++++++++++++++++++                        | 52% ~01s          
   |+++++++++++++++++++++++++++                       | 53% ~01s          
   |+++++++++++++++++++++++++++                       | 54% ~01s          
   |++++++++++++++++++++++++++++                      | 55% ~01s          
   |++++++++++++++++++++++++++++                      | 56% ~01s          
   |+++++++++++++++++++++++++++++                     | 57% ~01s          
   |++++++++++++++++++++++++++++++                    | 58% ~00s          
   |++++++++++++++++++++++++++++++                    | 59% ~00s          
   |+++++++++++++++++++++++++++++++                   | 60% ~00s          
   |+++++++++++++++++++++++++++++++                   | 61% ~00s          
   |++++++++++++++++++++++++++++++++                  | 62% ~00s          
   |++++++++++++++++++++++++++++++++                  | 63% ~00s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~00s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~00s          
   |++++++++++++++++++++++++++++++++++                | 67% ~00s          
   |++++++++++++++++++++++++++++++++++                | 68% ~00s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~00s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~00s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~00s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~00s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 01s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02s          
   |++                                                | 2 % ~02s          
   |++                                                | 3 % ~02s          
   |+++                                               | 4 % ~02s          
   |+++                                               | 6 % ~02s          
   |++++                                              | 7 % ~02s          
   |++++                                              | 8 % ~02s          
   |+++++                                             | 9 % ~02s          
   |++++++                                            | 10% ~02s          
   |++++++                                            | 11% ~02s          
   |+++++++                                           | 12% ~02s          
   |+++++++                                           | 13% ~02s          
   |++++++++                                          | 15% ~02s          
   |++++++++                                          | 16% ~02s          
   |+++++++++                                         | 17% ~02s          
   |+++++++++                                         | 18% ~02s          
   |++++++++++                                        | 19% ~02s          
   |+++++++++++                                       | 20% ~02s          
   |+++++++++++                                       | 21% ~02s          
   |++++++++++++                                      | 22% ~01s          
   |++++++++++++                                      | 24% ~01s          
   |+++++++++++++                                     | 25% ~01s          
   |+++++++++++++                                     | 26% ~01s          
   |++++++++++++++                                    | 27% ~01s          
   |+++++++++++++++                                   | 28% ~01s          
   |+++++++++++++++                                   | 29% ~01s          
   |++++++++++++++++                                  | 30% ~01s          
   |++++++++++++++++                                  | 31% ~01s          
   |+++++++++++++++++                                 | 33% ~01s          
   |+++++++++++++++++                                 | 34% ~01s          
   |++++++++++++++++++                                | 35% ~01s          
   |++++++++++++++++++                                | 36% ~01s          
   |+++++++++++++++++++                               | 37% ~01s          
   |++++++++++++++++++++                              | 38% ~01s          
   |++++++++++++++++++++                              | 39% ~01s          
   |+++++++++++++++++++++                             | 40% ~01s          
   |+++++++++++++++++++++                             | 42% ~01s          
   |++++++++++++++++++++++                            | 43% ~01s          
   |++++++++++++++++++++++                            | 44% ~01s          
   |+++++++++++++++++++++++                           | 45% ~01s          
   |++++++++++++++++++++++++                          | 46% ~01s          
   |++++++++++++++++++++++++                          | 47% ~01s          
   |+++++++++++++++++++++++++                         | 48% ~01s          
   |+++++++++++++++++++++++++                         | 49% ~01s          
   |++++++++++++++++++++++++++                        | 51% ~01s          
   |++++++++++++++++++++++++++                        | 52% ~01s          
   |+++++++++++++++++++++++++++                       | 53% ~01s          
   |+++++++++++++++++++++++++++                       | 54% ~01s          
   |++++++++++++++++++++++++++++                      | 55% ~01s          
   |+++++++++++++++++++++++++++++                     | 56% ~01s          
   |+++++++++++++++++++++++++++++                     | 57% ~01s          
   |++++++++++++++++++++++++++++++                    | 58% ~01s          
   |++++++++++++++++++++++++++++++                    | 60% ~01s          
   |+++++++++++++++++++++++++++++++                   | 61% ~01s          
   |+++++++++++++++++++++++++++++++                   | 62% ~01s          
   |++++++++++++++++++++++++++++++++                  | 63% ~01s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
   |++++++++++++++++++++++++++++++++++                | 66% ~01s          
   |++++++++++++++++++++++++++++++++++                | 67% ~01s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
   |++++++++++++++++++++++++++++++++++++              | 72% ~01s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~00s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
   |+++++++++++++++++++++++++++++++++++++++           | 78% ~00s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 84% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 88% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 90% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~02s          
   |++                                                | 2 % ~02s          
   |++                                                | 4 % ~02s          
   |+++                                               | 5 % ~02s          
   |+++                                               | 6 % ~02s          
   |++++                                              | 7 % ~02s          
   |+++++                                             | 8 % ~02s          
   |+++++                                             | 10% ~02s          
   |++++++                                            | 11% ~02s          
   |++++++                                            | 12% ~02s          
   |+++++++                                           | 13% ~01s          
   |++++++++                                          | 14% ~01s          
   |++++++++                                          | 15% ~01s          
   |+++++++++                                         | 17% ~01s          
   |+++++++++                                         | 18% ~01s          
   |++++++++++                                        | 19% ~01s          
   |+++++++++++                                       | 20% ~01s          
   |+++++++++++                                       | 21% ~01s          
   |++++++++++++                                      | 23% ~01s          
   |++++++++++++                                      | 24% ~01s          
   |+++++++++++++                                     | 25% ~01s          
   |++++++++++++++                                    | 26% ~01s          
   |++++++++++++++                                    | 27% ~01s          
   |+++++++++++++++                                   | 29% ~01s          
   |+++++++++++++++                                   | 30% ~01s          
   |++++++++++++++++                                  | 31% ~01s          
   |+++++++++++++++++                                 | 32% ~01s          
   |+++++++++++++++++                                 | 33% ~01s          
   |++++++++++++++++++                                | 35% ~01s          
   |++++++++++++++++++                                | 36% ~01s          
   |+++++++++++++++++++                               | 37% ~01s          
   |++++++++++++++++++++                              | 38% ~01s          
   |++++++++++++++++++++                              | 39% ~01s          
   |+++++++++++++++++++++                             | 40% ~01s          
   |+++++++++++++++++++++                             | 42% ~01s          
   |++++++++++++++++++++++                            | 43% ~01s          
   |+++++++++++++++++++++++                           | 44% ~01s          
   |+++++++++++++++++++++++                           | 45% ~01s          
   |++++++++++++++++++++++++                          | 46% ~01s          
   |++++++++++++++++++++++++                          | 48% ~01s          
   |+++++++++++++++++++++++++                         | 49% ~01s          
   |+++++++++++++++++++++++++                         | 50% ~01s          
   |++++++++++++++++++++++++++                        | 51% ~01s          
   |+++++++++++++++++++++++++++                       | 52% ~01s          
   |+++++++++++++++++++++++++++                       | 54% ~01s          
   |++++++++++++++++++++++++++++                      | 55% ~01s          
   |++++++++++++++++++++++++++++                      | 56% ~01s          
   |+++++++++++++++++++++++++++++                     | 57% ~01s          
   |++++++++++++++++++++++++++++++                    | 58% ~01s          
   |++++++++++++++++++++++++++++++                    | 60% ~01s          
   |+++++++++++++++++++++++++++++++                   | 61% ~01s          
   |+++++++++++++++++++++++++++++++                   | 62% ~01s          
   |++++++++++++++++++++++++++++++++                  | 63% ~01s          
   |+++++++++++++++++++++++++++++++++                 | 64% ~01s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
   |++++++++++++++++++++++++++++++++++                | 67% ~01s          
   |++++++++++++++++++++++++++++++++++                | 68% ~01s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
   |++++++++++++++++++++++++++++++++++++              | 70% ~01s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~00s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~00s          
   |+++++++++++++++++++++++++++++++++++++             | 74% ~00s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~00s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~00s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~00s          
   |++++++++++++++++++++++++++++++++++++++++          | 79% ~00s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 82% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 86% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 92% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 93% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 94% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 96% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 02s

   |                                                  | 0 % ~calculating  
   |+                                                 | 1 % ~03s          
   |++                                                | 2 % ~03s          
   |++                                                | 3 % ~02s          
   |+++                                               | 4 % ~02s          
   |+++                                               | 5 % ~02s          
   |++++                                              | 6 % ~02s          
   |++++                                              | 8 % ~02s          
   |+++++                                             | 9 % ~02s          
   |+++++                                             | 10% ~02s          
   |++++++                                            | 11% ~02s          
   |++++++                                            | 12% ~02s          
   |+++++++                                           | 13% ~02s          
   |+++++++                                           | 14% ~02s          
   |++++++++                                          | 15% ~02s          
   |+++++++++                                         | 16% ~02s          
   |+++++++++                                         | 17% ~02s          
   |++++++++++                                        | 18% ~02s          
   |++++++++++                                        | 19% ~02s          
   |+++++++++++                                       | 20% ~02s          
   |+++++++++++                                       | 22% ~02s          
   |++++++++++++                                      | 23% ~02s          
   |++++++++++++                                      | 24% ~02s          
   |+++++++++++++                                     | 25% ~02s          
   |+++++++++++++                                     | 26% ~02s          
   |++++++++++++++                                    | 27% ~02s          
   |++++++++++++++                                    | 28% ~02s          
   |+++++++++++++++                                   | 29% ~02s          
   |++++++++++++++++                                  | 30% ~02s          
   |++++++++++++++++                                  | 31% ~02s          
   |+++++++++++++++++                                 | 32% ~02s          
   |+++++++++++++++++                                 | 33% ~02s          
   |++++++++++++++++++                                | 34% ~02s          
   |++++++++++++++++++                                | 35% ~02s          
   |+++++++++++++++++++                               | 37% ~02s          
   |+++++++++++++++++++                               | 38% ~01s          
   |++++++++++++++++++++                              | 39% ~01s          
   |++++++++++++++++++++                              | 40% ~01s          
   |+++++++++++++++++++++                             | 41% ~01s          
   |+++++++++++++++++++++                             | 42% ~01s          
   |++++++++++++++++++++++                            | 43% ~01s          
   |+++++++++++++++++++++++                           | 44% ~01s          
   |+++++++++++++++++++++++                           | 45% ~01s          
   |++++++++++++++++++++++++                          | 46% ~01s          
   |++++++++++++++++++++++++                          | 47% ~01s          
   |+++++++++++++++++++++++++                         | 48% ~01s          
   |+++++++++++++++++++++++++                         | 49% ~01s          
   |++++++++++++++++++++++++++                        | 51% ~01s          
   |++++++++++++++++++++++++++                        | 52% ~01s          
   |+++++++++++++++++++++++++++                       | 53% ~01s          
   |+++++++++++++++++++++++++++                       | 54% ~01s          
   |++++++++++++++++++++++++++++                      | 55% ~01s          
   |++++++++++++++++++++++++++++                      | 56% ~01s          
   |+++++++++++++++++++++++++++++                     | 57% ~01s          
   |++++++++++++++++++++++++++++++                    | 58% ~01s          
   |++++++++++++++++++++++++++++++                    | 59% ~01s          
   |+++++++++++++++++++++++++++++++                   | 60% ~01s          
   |+++++++++++++++++++++++++++++++                   | 61% ~01s          
   |++++++++++++++++++++++++++++++++                  | 62% ~01s          
   |++++++++++++++++++++++++++++++++                  | 63% ~01s          
   |+++++++++++++++++++++++++++++++++                 | 65% ~01s          
   |+++++++++++++++++++++++++++++++++                 | 66% ~01s          
   |++++++++++++++++++++++++++++++++++                | 67% ~01s          
   |++++++++++++++++++++++++++++++++++                | 68% ~01s          
   |+++++++++++++++++++++++++++++++++++               | 69% ~01s          
   |+++++++++++++++++++++++++++++++++++               | 70% ~01s          
   |++++++++++++++++++++++++++++++++++++              | 71% ~01s          
   |+++++++++++++++++++++++++++++++++++++             | 72% ~01s          
   |+++++++++++++++++++++++++++++++++++++             | 73% ~01s          
   |++++++++++++++++++++++++++++++++++++++            | 74% ~01s          
   |++++++++++++++++++++++++++++++++++++++            | 75% ~01s          
   |+++++++++++++++++++++++++++++++++++++++           | 76% ~01s          
   |+++++++++++++++++++++++++++++++++++++++           | 77% ~01s          
   |++++++++++++++++++++++++++++++++++++++++          | 78% ~01s          
   |++++++++++++++++++++++++++++++++++++++++          | 80% ~01s          
   |+++++++++++++++++++++++++++++++++++++++++         | 81% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++         | 82% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 83% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++        | 84% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++       | 85% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 86% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++      | 87% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 88% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++     | 89% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 90% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++    | 91% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 92% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++   | 94% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 95% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++  | 96% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 97% ~00s          
   |+++++++++++++++++++++++++++++++++++++++++++++++++ | 98% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 99% ~00s          
   |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed = 03s
subtiss7.markers %>% group_by(cluster) %>% top_n(6, avg_diff)

Check expression of genes of interset.

All cells have the same value of Klrb1a.All cells have the same value of Klrb1c.

Dotplots let you see the intensity of exppression and the fraction of cells expressing for each of your genes of interest.

How big are the clusters?

table(subtiss7@ident)

 0  1  2  3 
68 62 48 32 

Checking for batch effects

Color by metadata, like plate barcode, to check for batch effects.

TSNEPlot(object = subtiss7, do.return = TRUE, group.by = "plate.barcode")

Print a table showing the count of cells in each identity category from each plate.

table(as.character(subtiss7@ident), as.character(subtiss7@meta.data$plate.barcode))
   
    D041912 D042193 D045139 D045140 MAA000409 MAA000639 MAA000652 MAA000844 MAA001844 MAA001887
  0      14       1       8       6        19        18         0         1         1         0
  1      31       0       2       2         5        14         1         1         2         4
  2      23       0       5       1        10         9         0         0         0         0
  3       1       1       0       1        24         5         0         0         0         0

Assigning subannotations

For the subsets, we produce subannotations. These will be written back as metadata in the original object, so we can see all subannotations together.

If some of the clusters you find in the subset deserve additional annotation, you can add that right here. Use NA for clusters for which no subannotation is needed.

subcluster.ids <- c(0, 1, 2, 3, 4, 5)
subtiss7@meta.data[,'annotation'] <- plyr::mapvalues(x = subtiss7@ident, from = subcluster.ids, to = subannotation)
The following `from` values were not present in `x`: 4, 5
subtiss7@meta.data[,'cell_ontology_id'] <- plyr::mapvalues(x = subtiss7@ident, from = subcluster.ids, to = cell_ontology_id)
The following `from` values were not present in `x`: 4, 5
tiss@meta.data[subtiss7@cell.names,'annotation'] <- as.character(subtiss7@meta.data$annotation)
invalid factor level, NA generated
tiss@meta.data[subtiss7@cell.names,'cell_ontology_id'] <- as.character(subtiss7@meta.data$cell_ontology_id)
invalid factor level, NA generated
subannotation <-
  c("T cell",
  "natural killer cell",
  "natural killer cell",
  "T cell",
  "T cell",
  "T cell")
  cell_ontology_id = c("CL:0000084",
  "CL:0000623",
  "CL:0000623",
  "CL:0000084",
  "CL:0000084",
  "CL:0000084")

When you save the subtissue, please give it a name.

Export the final metadata

So that Biohub can easily combine all your annotations, please export them as a simple csv.

LS0tCnRpdGxlOiAiTWFycm93IEZBQ1MgTm90ZWJvb2siCm91dHB1dDoKICBodG1sX2RvY3VtZW50OiBkZWZhdWx0CiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdAotLS0KCkVudGVyIHRoZSBkaXJlY3Rvcnkgb2YgdGhlIG1hY2EgZm9sZGVyIG9uIHlvdXIgZHJpdmUgYW5kIHRoZSBuYW1lIG9mIHRoZSB0aXNzdWUgeW91IHdhbnQgdG8gYW5hbHl6ZS4KCmBgYHtyfQp0aXNzdWVfb2ZfaW50ZXJlc3QgPSAiTWFycm93IgpgYGAKCkxvYWQgdGhlIHJlcXVpc2l0ZSBwYWNrYWdlcyBhbmQgc29tZSBhZGRpdGlvbmFsIGhlbHBlciBmdW5jdGlvbnMuCgpgYGB7cn0KbGlicmFyeShoZXJlKQpsaWJyYXJ5KHVzZWZ1bCkKbGlicmFyeShTZXVyYXQpCmxpYnJhcnkoZHBseXIpCmxpYnJhcnkoTWF0cml4KQoKc2F2ZV9kaXIgPSBoZXJlKCcwMF9kYXRhX2luZ2VzdCcsICd0aXNzdWVfcm9iaicpCmBgYAoKCgpgYGB7cn0KIyByZWFkIHRoZSBtZXRhZGF0YSB0byBnZXQgdGhlIHBsYXRlcyB3ZSB3YW50CnBsYXRlX21ldGFkYXRhX2ZpbGVuYW1lID0gaGVyZSgnMDBfZGF0YV9pbmdlc3QnLCAnZmFjc19yYXdfZGF0YScsICdtZXRhZGF0YV9GQUNTLmNzdicpCgpwbGF0ZV9tZXRhZGF0YSA8LSByZWFkLmNzdihwbGF0ZV9tZXRhZGF0YV9maWxlbmFtZSwgc2VwPSIsIiwgaGVhZGVyID0gVFJVRSkKY29sbmFtZXMocGxhdGVfbWV0YWRhdGEpWzFdIDwtICJwbGF0ZS5iYXJjb2RlIgpwbGF0ZV9tZXRhZGF0YQpgYGAKClN1YnNldCB0aGUgbWV0YWRhdGEgb24gdGhlIHRpc3N1ZS4KCmBgYHtyfQp0aXNzdWVfcGxhdGVzID0gZmlsdGVyKHBsYXRlX21ldGFkYXRhLCB0aXNzdWUgPT0gdGlzc3VlX29mX2ludGVyZXN0KVssYygncGxhdGUuYmFyY29kZScsJ3Rpc3N1ZScsJ3N1YnRpc3N1ZScsJ21vdXNlLnNleCcpXQp0aXNzdWVfcGxhdGVzCmBgYAoKTG9hZCB0aGUgcmVhZCBjb3VudCBkYXRhLgpgYGB7cn0KI0xvYWQgdGhlIGdlbmUgbmFtZXMgYW5kIHNldCB0aGUgbWV0YWRhdGEgY29sdW1ucyBieSBvcGVuaW5nIHRoZSBmaXJzdCBmaWxlCmZpbGVuYW1lID0gaGVyZSgnMDBfZGF0YV9pbmdlc3QnLCAnZmFjc19yYXdfZGF0YScsICdGQUNTJywgcGFzdGUwKHRpc3N1ZV9vZl9pbnRlcmVzdCwgJy1jb3VudHMuY3N2JykpCgpyYXcuZGF0YSA9IHJlYWQuY3N2KGZpbGVuYW1lLCBzZXA9IiwiLCByb3cubmFtZXM9MSkKIyByYXcuZGF0YSA9IGRhdGEuZnJhbWUocm93Lm5hbWVzID0gcm93bmFtZXMocmF3LmRhdGEpKQpjb3JuZXIocmF3LmRhdGEpCmBgYApNYWtlIGEgdmVjdG9yIG9mIHBsYXRlIGJhcmNvZGVzIGZvciBlYWNoIGNlbGwKCmBgYHtyfQpwbGF0ZS5iYXJjb2RlcyA9IGxhcHBseShjb2xuYW1lcyhyYXcuZGF0YSksIGZ1bmN0aW9uKHgpIHN0cnNwbGl0KHN0cnNwbGl0KHgsICJfIilbWzFdXVsxXSwgJy4nLCBmaXhlZD1UUlVFKVtbMV1dWzJdKQpoZWFkKHBsYXRlLmJhcmNvZGVzKQpgYGAKClVzZSBvbmx5IHRoZSBtZXRhZGF0YSByb3dzIGNvcnJlc3BvbmRpbmcgdG8gQmxhZGRlciBwbGF0ZXMuIE1ha2UgYSBwbGF0ZSBiYXJjb2RlIGRhdGFmcmFtZSB0byAiZXhwYW5kIiB0aGUgcGVyLXBsYXRlIG1ldGFkYXRhIHRvIGJlIHBlci1jZWxsLgpgYGB7cn0KYmFyY29kZS5kZiA9IHQuZGF0YS5mcmFtZShhcy5kYXRhLmZyYW1lKHBsYXRlLmJhcmNvZGVzKSkKCnJvd25hbWVzKGJhcmNvZGUuZGYpID0gY29sbmFtZXMocmF3LmRhdGEpCmNvbG5hbWVzKGJhcmNvZGUuZGYpID0gYygncGxhdGUuYmFyY29kZScpCmhlYWQoYmFyY29kZS5kZikKCnJuYW1lcyA9IHJvdy5uYW1lcyhiYXJjb2RlLmRmKQptZXRhLmRhdGEgPC0gbWVyZ2UoYmFyY29kZS5kZiwgcGxhdGVfbWV0YWRhdGEsIGJ5PSdwbGF0ZS5iYXJjb2RlJywgc29ydCA9IFQpCnJvdy5uYW1lcyhtZXRhLmRhdGEpIDwtIHJuYW1lcwpjb3JuZXIobWV0YS5kYXRhKQoKIyBTb3J0IGNlbGxzIGJ5IHBsYXRlIGJhcmNvZGUgYmVjYXVzZSB0aGF0J3MgaG93IHRoZSBkYXRhIHdhcyBvcmlnaW5hbGx5Cm1ldGEuZGF0YSA9IG1ldGEuZGF0YVtvcmRlcihtZXRhLmRhdGEkcGxhdGUuYmFyY29kZSksIF0KY29ybmVyKG1ldGEuZGF0YSkKcmF3LmRhdGEgPSByYXcuZGF0YVssIHJvd25hbWVzKG1ldGEuZGF0YSldCmNvcm5lcihyYXcuZGF0YSkKYGBgClByb2Nlc3MgdGhlIHJhdyBkYXRhIGFuZCBsb2FkIGl0IGludG8gdGhlIFNldXJhdCBvYmplY3QuCgpgYGB7cn0KIyBGaW5kIEVSQ0MncywgY29tcHV0ZSB0aGUgcGVyY2VudCBFUkNDLCBhbmQgZHJvcCB0aGVtIGZyb20gdGhlIHJhdyBkYXRhLgplcmNjcyA8LSBncmVwKHBhdHRlcm4gPSAiXkVSQ0MtIiwgeCA9IHJvd25hbWVzKHggPSByYXcuZGF0YSksIHZhbHVlID0gVFJVRSkKcGVyY2VudC5lcmNjIDwtIE1hdHJpeDo6Y29sU3VtcyhyYXcuZGF0YVtlcmNjcywgXSkvTWF0cml4Ojpjb2xTdW1zKHJhdy5kYXRhKQplcmNjLmluZGV4IDwtIGdyZXAocGF0dGVybiA9ICJeRVJDQy0iLCB4ID0gcm93bmFtZXMoeCA9IHJhdy5kYXRhKSwgdmFsdWUgPSBGQUxTRSkKcmF3LmRhdGEgPC0gcmF3LmRhdGFbLWVyY2MuaW5kZXgsXQoKIyBDcmVhdGUgdGhlIFNldXJhdCBvYmplY3Qgd2l0aCBhbGwgdGhlIGRhdGEKdGlzcyA8LSBDcmVhdGVTZXVyYXRPYmplY3QocmF3LmRhdGEgPSByYXcuZGF0YSwgcHJvamVjdCA9IHRpc3N1ZV9vZl9pbnRlcmVzdCwgCiAgICAgICAgICAgICAgICAgICAgbWluLmNlbGxzID0gNSwgbWluLmdlbmVzID0gNSkKCnRpc3MgPC0gQWRkTWV0YURhdGEob2JqZWN0ID0gdGlzcywgbWV0YS5kYXRhKQp0aXNzIDwtIEFkZE1ldGFEYXRhKG9iamVjdCA9IHRpc3MsIHBlcmNlbnQuZXJjYywgY29sLm5hbWUgPSAicGVyY2VudC5lcmNjIikKIyBDaGFuZ2UgZGVmYXVsdCBuYW1lIGZvciBzdW1zIG9mIGNvdW50cyBmcm9tIG5VTUkgdG8gblJlYWRzCmNvbG5hbWVzKHRpc3NAbWV0YS5kYXRhKVtjb2xuYW1lcyh0aXNzQG1ldGEuZGF0YSkgPT0gJ25VTUknXSA8LSAnblJlYWRzJwoKIyBDcmVhdGUgbWV0YWRhdGEgY29sdW1ucyBmb3IgYW5ub3RhdGlvbnMgYW5kIHN1YmFubm90YXRpb25zCnRpc3NAbWV0YS5kYXRhWywnYW5ub3RhdGlvbiddIDwtIE5BCnRpc3NAbWV0YS5kYXRhWywnc3ViYW5ub3RhdGlvbiddIDwtIE5BCmBgYAoKCkNhbGN1bGF0ZSBwZXJjZW50IHJpYm9zb21hbCBnZW5lcy4KCmBgYHtyfQpyaWJvLmdlbmVzIDwtIGdyZXAocGF0dGVybiA9ICJeUnBbc2xdW1s6ZGlnaXQ6XV0iLCB4ID0gcm93bmFtZXMoeCA9IHRpc3NAZGF0YSksIHZhbHVlID0gVFJVRSkKcGVyY2VudC5yaWJvIDwtIE1hdHJpeDo6Y29sU3Vtcyh0aXNzQHJhdy5kYXRhW3JpYm8uZ2VuZXMsIF0pL01hdHJpeDo6Y29sU3Vtcyh0aXNzQHJhdy5kYXRhKQp0aXNzIDwtIEFkZE1ldGFEYXRhKG9iamVjdCA9IHRpc3MsIG1ldGFkYXRhID0gcGVyY2VudC5yaWJvLCBjb2wubmFtZSA9ICJwZXJjZW50LnJpYm8iKQpgYGAKCkEgc2FuaXR5IGNoZWNrOiBnZW5lcyBwZXIgY2VsbCB2cyByZWFkcyBwZXIgY2VsbC4KCmBgYHtyfQpHZW5lUGxvdChvYmplY3QgPSB0aXNzLCBnZW5lMSA9ICJuUmVhZHMiLCBnZW5lMiA9ICJuR2VuZSIsIHVzZS5yYXc9VCkKYGBgCgpGaWx0ZXIgb3V0IGNlbGxzIHdpdGggZmV3IHJlYWRzIGFuZCBmZXcgZ2VuZXMuCgpgYGB7cn0KdGlzcyA8LSBGaWx0ZXJDZWxscyhvYmplY3QgPSB0aXNzLCBzdWJzZXQubmFtZXMgPSBjKCJuR2VuZSIsICJuUmVhZHMiKSwgCiAgICBsb3cudGhyZXNob2xkcyA9IGMoNTAwLCA1MDAwMCksIGhpZ2gudGhyZXNob2xkcyA9IGMoMjUwMDAsIDIwMDAwMDApKQpgYGAKCgpOb3JtYWxpemUgdGhlIGRhdGEsIHRoZW4gcmVncmVzcyBvdXQgY29ycmVsYXRpb24gd2l0aCB0b3RhbCByZWFkcwpgYGB7cn0KdGlzcyA8LSBOb3JtYWxpemVEYXRhKG9iamVjdCA9IHRpc3MpCnRpc3MgPC0gU2NhbGVEYXRhKG9iamVjdCA9IHRpc3MsIHZhcnMudG8ucmVncmVzcyA9IGMoIm5SZWFkcyIsICJwZXJjZW50LnJpYm8iLCJSbjQ1cyIpKQp0aXNzIDwtIEZpbmRWYXJpYWJsZUdlbmVzKG9iamVjdCA9IHRpc3MsIGRvLnBsb3QgPSBUUlVFLCB4LmhpZ2guY3V0b2ZmID0gSW5mLCB5LmN1dG9mZiA9IDAuNSkKYGBgCgoKUnVuIFByaW5jaXBhbCBDb21wb25lbnQgQW5hbHlzaXMuCmBgYHtyfQp0aXNzIDwtIFJ1blBDQShvYmplY3QgPSB0aXNzLCBkby5wcmludCA9IEZBTFNFKQp0aXNzIDwtIFByb2plY3RQQ0Eob2JqZWN0ID0gdGlzcywgZG8ucHJpbnQgPSBGQUxTRSkKYGBgCgpgYGB7ciwgZWNobz1GQUxTRSwgZmlnLmhlaWdodD00LCBmaWcud2lkdGg9OH0KUENIZWF0bWFwKG9iamVjdCA9IHRpc3MsIHBjLnVzZSA9IDE6MywgY2VsbHMudXNlID0gNTAwLCBkby5iYWxhbmNlZCA9IFRSVUUsIGxhYmVsLmNvbHVtbnMgPSBGQUxTRSwgbnVtLmdlbmVzID0gOCkKYGBgCgpMYXRlciBvbiAoaW4gRmluZENsdXN0ZXJzIGFuZCBUU05FKSB5b3Ugd2lsbCBwaWNrIGEgbnVtYmVyIG9mIHByaW5jaXBhbCBjb21wb25lbnRzIHRvIHVzZS4gVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBrZWVwaW5nIHRoZSBtYWpvciBkaXJlY3Rpb25zIG9mIHZhcmlhdGlvbiBpbiB0aGUgZGF0YSBhbmQsIGlkZWFsbHksIHN1cHJlc3Npbmcgbm9pc2UuIFRoZXJlIGlzIG5vIGNvcnJlY3QgYW5zd2VyIHRvIHRoZSBudW1iZXIgdG8gdXNlLCBidXQgYSBkZWNlbnQgcnVsZSBvZiB0aHVtYiBpcyB0byBnbyB1bnRpbCB0aGUgcGxvdCBwbGF0ZWF1cy4KCmBgYHtyfQpQQ0VsYm93UGxvdChvYmplY3QgPSB0aXNzKQpgYGAKCkNob29zZSB0aGUgbnVtYmVyIG9mIHByaW5jaXBhbCBjb21wb25lbnRzIHRvIHVzZS4KYGBge3J9CiMgU2V0IG51bWJlciBvZiBwcmluY2lwYWwgY29tcG9uZW50cy4gCm4ucGNzID0gMTUKYGBgCgoKVGhlIGNsdXN0ZXJpbmcgaXMgcGVyZm9ybWVkIGJhc2VkIG9uIGEgbmVhcmVzdCBuZWlnaGJvcnMgZ3JhcGguIENlbGxzIHRoYXQgaGF2ZSBzaW1pbGFyIGV4cHJlc3Npb24gd2lsbCBiZSBqb2luZWQgdG9nZXRoZXIuIFRoZSBMb3V2YWluIGFsZ29yaXRobSBsb29rcyBmb3IgZ3JvdXBzIG9mIGNlbGxzIHdpdGggaGlnaCBtb2R1bGFyaXR5LS1tb3JlIGNvbm5lY3Rpb25zIHdpdGhpbiB0aGUgZ3JvdXAgdGhhbiBiZXR3ZWVuIGdyb3Vwcy4gVGhlIHJlc29sdXRpb24gcGFyYW1ldGVyIGRldGVybWluZXMgdGhlIHNjYWxlLi4uaGlnaGVyIHJlc29sdXRpb24gd2lsbCBnaXZlIG1vcmUgY2x1c3RlcnMsIGxvd2VyIHJlc29sdXRpb24gd2lsbCBnaXZlIGZld2VyLgoKRm9yIHRoZSB0b3AtbGV2ZWwgY2x1c3RlcmluZywgYWltIHRvIHVuZGVyLWNsdXN0ZXIgaW5zdGVhZCBvZiBvdmVyLWNsdXN0ZXIuIEl0IHdpbGwgYmUgZWFzeSB0byBzdWJzZXQgZ3JvdXBzIGFuZCBmdXJ0aGVyIGFuYWx5emUgdGhlbSBiZWxvdy4KCmBgYHtyfQojIFNldCByZXNvbHV0aW9uIApyZXMudXNlZCA8LSAwLjUKCnRpc3MgPC0gRmluZENsdXN0ZXJzKG9iamVjdCA9IHRpc3MsIHJlZHVjdGlvbi50eXBlID0gInBjYSIsIGRpbXMudXNlID0gMTpuLnBjcywgCiAgICByZXNvbHV0aW9uID0gcmVzLnVzZWQsIHByaW50Lm91dHB1dCA9IDAsIHNhdmUuU05OID0gVFJVRSkKYGBgCgpUbyB2aXN1YWxpemUgCmBgYHtyfQojIElmIGNlbGxzIGFyZSB0b28gc3ByZWFkIG91dCwgeW91IGNhbiByYWlzZSB0aGUgcGVycGxleGl0eS4gSWYgeW91IGhhdmUgZmV3IGNlbGxzLCB0cnkgYSBsb3dlciBwZXJwbGV4aXR5IChidXQgbmV2ZXIgbGVzcyB0aGFuIDEwKS4KdGlzcyA8LSBSdW5UU05FKG9iamVjdCA9IHRpc3MsIGRpbXMudXNlID0gMTpuLnBjcywgc2VlZC51c2UgPSAxMCwgcGVycGxleGl0eT04NCkKYGBgCgpgYGB7cn0KIyBub3RlIHRoYXQgeW91IGNhbiBzZXQgZG8ubGFiZWw9VCB0byBoZWxwIGxhYmVsIGluZGl2aWR1YWwgY2x1c3RlcnMKVFNORVBsb3Qob2JqZWN0ID0gdGlzcywgZG8ubGFiZWwgPSBUKQpgYGAKCkNoZWNrIGV4cHJlc3Npb24gb2YgZ2VuZXMgb2YgaW50ZXJzZXQuCgpgYGB7ciwgZWNobz1GQUxTRSwgZmlnLmhlaWdodD04NCwgZmlnLndpZHRoPTE1fQpnZW5lc190b19jaGVjayA9IGMoJ0l0Z2FtJywgJ0lsN3InLCAnS2l0JywgJ0F0eG4xJywgJ0ZjZ3IzJywgJ0ZsdDMnLCAnQ2QzNCcsICdTbGFtZjEnLCAnR3ByNTYnLCAnU3RtbjEnLCAnVG1lbTE3NmInLCAgJ0l0Z2FsJywgJ0l0Z2F4JywgJ0VtcjEnLCAnQ2Q2OCcsICdGY2dyNCcsICdNcGVnMScsICdJdGdiMicsICdBaG5haycsICdQbGQ0JywgJ0NkM2UnLCAnQ2Q0JywgJ0NkOGEnLCAnTHk2ZCcsICdDZDI3JywgJ0NyMicsICdGY2VyMmEnLCAnQ2QyJywgJ0NkNycsICdNbWUnLCAnVGh5MScsICdDZDE5JywgJ01zNGExJywgJ0NkNzQnLCAnQ2hjaGQxMCcsICdDbnAnLCAnQ2Q3OWEnLCAnQ2Q3OWInLCAnVnByZWIzJywgJ0tscmIxYScsICdTMTAwYTExJywgJ0x0ZicsICdOZ3AnLCAnRmNlcjFnJywgJ1BnbHlycDEnLCAnTGNuMicsICdDYW1wJywgJ0hwJywgJ0x5Nmc2YycsICdMeTZnNmUnLCAnUHRwcmMnKQojZ2VuZXNfdG9fY2hlY2sgPSBjKCdBbGInLCAnQ3lwMmYyJywgJ0N5cDJlMScsICdIYW1wJykKCkZlYXR1cmVQbG90KHRpc3MsIGdlbmVzX3RvX2NoZWNrLCBwdC5zaXplID0gMSwgbkNvbCA9IDMpCmBgYAoKRG90cGxvdHMgbGV0IHlvdSBzZWUgdGhlIGludGVuc2l0eSBvZiBleHBwcmVzc2lvbiBhbmQgdGhlIGZyYWN0aW9uIG9mIGNlbGxzIGV4cHJlc3NpbmcgZm9yIGVhY2ggb2YgeW91ciBnZW5lcyBvZiBpbnRlcmVzdC4KCmBgYHtyLCBlY2hvPUZBTFNFLCBmaWcuaGVpZ2h0PTQsIGZpZy53aWR0aD0zOX0KIyBUbyBjaGFuZ2UgdGhlIHktYXhpcyB0byBzaG93IHJhdyBjb3VudHMsIGFkZCB1c2UucmF3ID0gVC4KRG90UGxvdCh0aXNzLCBnZW5lc190b19jaGVjaywgcGxvdC5sZWdlbmQgPSBUKQpgYGAKCkhvdyBiaWcgYXJlIHRoZSBjbHVzdGVycz8KYGBge3J9CnRhYmxlKHRpc3NAaWRlbnQpCmBgYAoKV2hpY2ggbWFya2VycyBpZGVudGlmeSBhIHNwZWNpZmljIGNsdXN0ZXI/CgpgYGB7cn0KY2x1c3QubWFya2VycyA8LSBGaW5kTWFya2VycyhvYmplY3QgPSB0aXNzLCBpZGVudC4xID0gMCwgb25seS5wb3MgPSBUUlVFLCBtaW4ucGN0ID0gMC4yNSwgdGhyZXNoLnVzZSA9IDAuMjUpCmBgYAoKYGBge3J9CnByaW50KHggPSBoZWFkKHg9IGNsdXN0Lm1hcmtlcnMsIG4gPSAxMCkpCmBgYAoKWW91IGNhbiBhbHNvIGNvbXB1dGUgYWxsIG1hcmtlcnMgZm9yIGFsbCBjbHVzdGVycyBhdCBvbmNlLiBUaGlzIG1heSB0YWtlIHNvbWUgdGltZS4KYGBge3J9CnRpc3MubWFya2VycyA8LSBGaW5kQWxsTWFya2VycyhvYmplY3QgPSB0aXNzLCBvbmx5LnBvcyA9IFRSVUUsIG1pbi5wY3QgPSAwLjI1LCB0aHJlc2gudXNlID0gMC4yNSkKYGBgCmBgYHtyfQpoZWFkKHRpc3MubWFya2VycykKYGBgCgpEaXNwbGF5IHRoZSB0b3AgbWFya2VycyB5b3UgY29tcHV0ZWQgYWJvdmUuCmBgYHtyfQp0aXNzLm1hcmtlcnMgJT4lIGdyb3VwX2J5KGNsdXN0ZXIpICU+JSB0b3Bfbig1LCBhdmdfZGlmZikKYGBgCgojIyBBc3NpZ25pbmcgY2VsbCB0eXBlIGlkZW50aXR5IHRvIGNsdXN0ZXJzCgpBdCBhIGNvYXJzZSBsZXZlbCwgd2UgY2FuIHVzZSBjYW5vbmljYWwgbWFya2VycyB0byBtYXRjaCB0aGUgdW5iaWFzZWQgY2x1c3RlcmluZyB0byBrbm93biBjZWxsIHR5cGVzOgoKMDogYWxwaGEKMTogYmV0YQoyOiBiZXRhCjM6IGV4b2NyaW5lCjQ6IGR1Y3QKNTogZGVsdGEKNjogZ2FtbWEKNzogZW5kb3RoZWxpYWwKODogaW1tdW5lCjk6IHN0ZWxsYXRlCgpgYGB7cn0KIyBzdGFzaCBjdXJyZW50IGNsdXN0ZXIgSURzCnRpc3MgPC0gU3Rhc2hJZGVudChvYmplY3QgPSB0aXNzLCBzYXZlLm5hbWUgPSAiY2x1c3Rlci5pZHMiKQoKIyBlbnVtZXJhdGUgY3VycmVudCBjbHVzdGVyIElEcyBhbmQgdGhlIGxhYmVscyBmb3IgdGhlbQpjbHVzdGVyLmlkcyA8LSBjKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwKQphbm5vdGF0aW9uIDwtIGMoImhlbWF0b3BvaWV0aWMgc3RlbSBjZWxsIiwgIkIgY2VsbCIsICJCIGNlbGwiLCAibmV1dHJvcGhpbCIsICJncmFudWxvY3l0ZSIsICJtb25vY3l0ZSIsICJCIGNlbGwiLCAiVF9OSyIsICJuZXV0cm9waGlsIiwgIkZyYWN0aW9uIEEgcHJlLXBybyBCIGNlbGwiLCAiaGVtYXRvcG9pZXRpYyBzdGVtIGNlbGwiKQpjZWxsX29udG9sb2d5X2lkIDwtIGMoIkNMOjAwMDAwMzciLCAiQ0w6MDAwMDIzNiIsICJDTDowMDAwMjM2IiwgIkNMOjAwMDA3NzUiLCAiQ0w6MDAwMDA5NCIsICJDTDowMDAwNTc2IiwgIkNMOjAwMDAyMzYiLCBOQSwgIkNMOjAwMDA3NzUiLCAiQ0w6MDAwMjA0NSIsICJDTDowMDAwMDM3IikKICAKCnRpc3NAbWV0YS5kYXRhWywnYW5ub3RhdGlvbiddIDwtIHBseXI6Om1hcHZhbHVlcyh4ID0gdGlzc0BpZGVudCwgZnJvbSA9IGNsdXN0ZXIuaWRzLCB0byA9IGFubm90YXRpb24pCnRpc3NAbWV0YS5kYXRhWywnY2VsbF9vbnRvbG9neV9pZCddIDwtIHBseXI6Om1hcHZhbHVlcyh4ID0gdGlzc0BpZGVudCwgZnJvbSA9IGNsdXN0ZXIuaWRzLCB0byA9IGNlbGxfb250b2xvZ3lfaWQpCgp0aXNzQG1ldGEuZGF0YVt0aXNzQGNlbGwubmFtZXMsJ2Fubm90YXRpb24nXSA8LSBhcy5jaGFyYWN0ZXIodGlzc0BtZXRhLmRhdGEkYW5ub3RhdGlvbikKdGlzc0BtZXRhLmRhdGFbdGlzc0BjZWxsLm5hbWVzLCdjZWxsX29udG9sb2d5X2lkJ10gPC0gYXMuY2hhcmFjdGVyKHRpc3NAbWV0YS5kYXRhJGNlbGxfb250b2xvZ3lfaWQpCgoKVFNORVBsb3Qob2JqZWN0ID0gdGlzcywgZG8ubGFiZWwgPSBUUlVFLCBwdC5zaXplID0gMC41LCBncm91cC5ieT0nYW5ub3RhdGlvbicpCmBgYAoKCiMjIENoZWNraW5nIGZvciBiYXRjaCBlZmZlY3RzCgoKQ29sb3IgYnkgbWV0YWRhdGEsIGxpa2UgcGxhdGUgYmFyY29kZSwgdG8gY2hlY2sgZm9yIGJhdGNoIGVmZmVjdHMuCmBgYHtyfQpUU05FUGxvdChvYmplY3QgPSB0aXNzLCBkby5yZXR1cm4gPSBUUlVFLCBncm91cC5ieSA9ICJwbGF0ZS5iYXJjb2RlIikKYGBgCgpQcmludCBhIHRhYmxlIHNob3dpbmcgdGhlIGNvdW50IG9mIGNlbGxzIGluIGVhY2ggaWRlbnRpdHkgY2F0ZWdvcnkgZnJvbSBlYWNoIHBsYXRlLgoKYGBge3J9CnRhYmxlKGFzLmNoYXJhY3Rlcih0aXNzQGlkZW50KSwgYXMuY2hhcmFjdGVyKHRpc3NAbWV0YS5kYXRhJHBsYXRlLmJhcmNvZGUpKQpgYGAKCgojIFN1YnNldCBhbmQgaXRlcmF0ZQoKV2UgY2FuIHJlcGVhdCB0aGUgYWJvdmUgYW5hbHlzaXMgb24gYSBzdWJzZXQgb2YgY2VsbHMsIGRlZmluZWQgdXNpbmcgY2x1c3RlciBJRHMgb3Igc29tZSBvdGhlciBtZXRhZGF0YS4gVGhpcyBpcyBhIGdvb2Qgd2F5IHRvIGRyaWxsIGRvd24gYW5kIGZpbmQgc3Vic3RydWN0dXJlLgoKCiMjIFN1YnNldCA9PSBUIGFuZCBOSyBjZWxscyAoQ2x1c3RlciA3KQoKYGBge3J9CiMgU3Vic2V0IGRhdGEgYmFzZWQgb24gY2x1c3RlciBpZApzdWJ0aXNzNyA8LSBTdWJzZXREYXRhKG9iamVjdCA9IHRpc3MsIGlkZW50LnVzZSA9IGMoNyksIGRvLmNlbnRlciA9IEYsIGRvLnNjYWxlID0gRiwgY2VsbHMudXNlID0gKQoKIyBUbyBzdWJzZXQgZGF0YSBiYXNlZCBvbiBhbm5vdGF0aW9uIG9yIG90aGVyIG1ldGFkYXRhLCB5b3UgY2FuIGV4cGxpY2l0bHkgcGFzcyBjZWxsIG5hbWVzCgojIGFubm8gPSAnZXhvY3JpbmUgY2VsbHMnCiMgY2VsbHMudG8udXNlID0gdGlzc0BjZWxsLm5hbWVzW3doaWNoKHRpc3NAbWV0YS5kYXRhJGFubm90YXRpb24gPT0gYW5ubyldCiMgc3VidGlzczcgPC0gU3Vic2V0RGF0YShvYmplY3QgPSB0aXNzLCBjZWxscy51c2UgPSBjZWxscy50by51c2UsIGRvLmNlbnRlciA9IEYsIGRvLnNjYWxlID0gRikKCmBgYAoKYGBge3J9CnN1YnRpc3M3IDwtIE5vcm1hbGl6ZURhdGEob2JqZWN0ID0gc3VidGlzczcpCnN1YnRpc3M3IDwtIFNjYWxlRGF0YShvYmplY3QgPSBzdWJ0aXNzNywgdmFycy50by5yZWdyZXNzID0gYygiblJlYWRzIiwgInBlcmNlbnQucmlibyIsIlJuNDVzIikpCmBgYAoKYGBge3J9CnN1YnRpc3M3IDwtIEZpbmRWYXJpYWJsZUdlbmVzKG9iamVjdCA9IHN1YnRpc3M3LCBkby5wbG90ID0gVFJVRSwgeC5oaWdoLmN1dG9mZiA9IEluZiwgeS5jdXRvZmYgPSAwLjgpCnN1YnRpc3M3IDwtIFJ1blBDQShvYmplY3QgPSBzdWJ0aXNzNywgcGNzLmNvbXB1dGUgPSAyMCkKc3VidGlzczcgPC0gUHJvamVjdFBDQShvYmplY3QgPSBzdWJ0aXNzNywgZG8ucHJpbnQgPSBGQUxTRSkKYGBgCgoKUnVuIFByaW5jaXBhbCBDb21wb25lbnQgQW5hbHlzaXMuCmBgYHtyfQpzdWJ0aXNzNyA8LSBSdW5QQ0Eob2JqZWN0ID0gc3VidGlzczcsIGRvLnByaW50ID0gRkFMU0UpCnN1YnRpc3M3IDwtIFByb2plY3RQQ0Eob2JqZWN0ID0gc3VidGlzczcsIGRvLnByaW50ID0gRkFMU0UpCmBgYAoKYGBge3J9CiMgSWYgdGhpcyBmYWlscyBmb3IgeW91ciBzdWJzZXQsIGl0IG1heSBiZSB0aGF0IGNlbGxzLnVzZSBpcyBtb3JlIGNlbGxzIHRoYW4geW91IGhhdmUgbGVmdCEgVHJ5IHJlZHVjaW5nIGl0LgpQQ0hlYXRtYXAob2JqZWN0ID0gc3VidGlzczcsIHBjLnVzZSA9IDE6MywgY2VsbHMudXNlID0gMjUwLCBkby5iYWxhbmNlZCA9IFRSVUUsIGxhYmVsLmNvbHVtbnMgPSBGQUxTRSwgbnVtLmdlbmVzID0gMTIpCmBgYAoKTGF0ZXIgb24gKGluIEZpbmRDbHVzdGVycyBhbmQgVFNORSkgeW91IHdpbGwgcGljayBhIG51bWJlciBvZiBwcmluY2lwYWwgY29tcG9uZW50cyB0byB1c2UuIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2Yga2VlcGluZyB0aGUgbWFqb3IgZGlyZWN0aW9ucyBvZiB2YXJpYXRpb24gaW4gdGhlIGRhdGEgYW5kLCBpZGVhbGx5LCBzdXByZXNzaW5nIG5vaXNlLiBUaGVyZSBpcyBubyBjb3JyZWN0IGFuc3dlciB0byB0aGUgbnVtYmVyIHRvIHVzZSwgYnV0IGEgZGVjZW50IHJ1bGUgb2YgdGh1bWIgaXMgdG8gZ28gdW50aWwgdGhlIHBsb3QgcGxhdGVhdXMuCgpgYGB7cn0KUENFbGJvd1Bsb3Qob2JqZWN0ID0gc3VidGlzczcpCmBgYAoKQ2hvb3NlIHRoZSBudW1iZXIgb2YgcHJpbmNpcGFsIGNvbXBvbmVudHMgdG8gdXNlLgpgYGB7cn0KIyBTZXQgbnVtYmVyIG9mIHByaW5jaXBhbCBjb21wb25lbnRzLiAKc3ViNy5uLnBjcyA9IDUKYGBgCgoKVGhlIGNsdXN0ZXJpbmcgaXMgcGVyZm9ybWVkIGJhc2VkIG9uIGEgbmVhcmVzdCBuZWlnaGJvcnMgZ3JhcGguIENlbGxzIHRoYXQgaGF2ZSBzaW1pbGFyIGV4cHJlc3Npb24gd2lsbCBiZSBqb2luZWQgdG9nZXRoZXIuIFRoZSBMb3V2YWluIGFsZ29yaXRobSBsb29rcyBmb3IgZ3JvdXBzIG9mIGNlbGxzIHdpdGggaGlnaCBtb2R1bGFyaXR5LS1tb3JlIGNvbm5lY3Rpb25zIHdpdGhpbiB0aGUgZ3JvdXAgdGhhbiBiZXR3ZWVuIGdyb3Vwcy4gVGhlIHJlc29sdXRpb24gcGFyYW1ldGVyIGRldGVybWluZXMgdGhlIHNjYWxlLi4uaGlnaGVyIHJlc29sdXRpb24gd2lsbCBnaXZlIG1vcmUgY2x1c3RlcnMsIGxvd2VyIHJlc29sdXRpb24gd2lsbCBnaXZlIGZld2VyLgoKYGBge3J9CiMgU2V0IHJlc29sdXRpb24gCnN1Yi5yZXMudXNlZCA8LSAxCgpzdWJ0aXNzNyA8LSBGaW5kQ2x1c3RlcnMob2JqZWN0ID0gc3VidGlzczcsIHJlZHVjdGlvbi50eXBlID0gInBjYSIsIGRpbXMudXNlID0gMTpzdWI3Lm4ucGNzLCAKICAgIHJlc29sdXRpb24gPSBzdWIucmVzLnVzZWQsIHByaW50Lm91dHB1dCA9IDAsIHNhdmUuU05OID0gVFJVRSkKYGBgCgpUbyB2aXN1YWxpemUgCmBgYHtyfQojIElmIGNlbGxzIGFyZSB0b28gc3ByZWFkIG91dCwgeW91IGNhbiByYWlzZSB0aGUgcGVycGxleGl0eS4gSWYgeW91IGhhdmUgZmV3IGNlbGxzLCB0cnkgYSBsb3dlciBwZXJwbGV4aXR5IChidXQgbmV2ZXIgbGVzcyB0aGFuIDEwKS4Kc3VidGlzczcgPC0gUnVuVFNORShvYmplY3QgPSBzdWJ0aXNzNywgZGltcy51c2UgPSAxOnN1Yjcubi5wY3MsIHNlZWQudXNlID0gMTAsIHBlcnBsZXhpdHk9MzApCmBgYAoKYGBge3J9CiMgbm90ZSB0aGF0IHlvdSBjYW4gc2V0IGRvLmxhYmVsPVQgdG8gaGVscCBsYWJlbCBpbmRpdmlkdWFsIGNsdXN0ZXJzClRTTkVQbG90KG9iamVjdCA9IHN1YnRpc3M3LCBkby5sYWJlbCA9IFQpCmBgYAoKYGBge3J9CnN1YnRpc3M3Lm1hcmtlcnMgPC0gRmluZEFsbE1hcmtlcnMob2JqZWN0ID0gc3VidGlzczcsIG9ubHkucG9zID0gVFJVRSwgbWluLnBjdCA9IDAuMjUsIHRocmVzaC51c2UgPSAwLjI1KQpgYGAKCmBgYHtyfQpzdWJ0aXNzNy5tYXJrZXJzICU+JSBncm91cF9ieShjbHVzdGVyKSAlPiUgdG9wX24oNiwgYXZnX2RpZmYpCmBgYAoKQ2hlY2sgZXhwcmVzc2lvbiBvZiBnZW5lcyBvZiBpbnRlcnNldC4KYGBge3IsIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9NDgsIGZpZy53aWR0aD0xNX0KZ2VuZXNfdG9fY2hlY2sgPSBjKCdDZDYnLCdJbDdyJywnQ3RsYTQnLCdDZDhiMScsICdDeGNyNicsICdDZDhhJywgJ1R5cm9icCcsICdOY3IxJywgJ0NkM2UnLCAnS2xyYjFhJywgJ0tscmIxYycsICdHem1hJywgJ1ByZjEnLCAnU2VycGluYjknLCAnTHl6MicsICdOZ3AnLCAnSHAnLCAnTHk2YzInLCAnQ2Q3OWEnLCAnQ2Q3NCcsICdIMi1BYScsICdIMi1BYjEnLCAnQ2Q3OWInLCAnSDItRWIxJywgJ0NjbmEyJywgJ1N0bW4xJywgJ1RvcDJhJywgJ01raTY3JywgJ1JybTInLCAnTmtnNycpCgpGZWF0dXJlUGxvdChzdWJ0aXNzNywgZ2VuZXNfdG9fY2hlY2ssIHB0LnNpemUgPSAxLCBuQ29sID0gMykKYGBgCgpEb3RwbG90cyBsZXQgeW91IHNlZSB0aGUgaW50ZW5zaXR5IG9mIGV4cHByZXNzaW9uIGFuZCB0aGUgZnJhY3Rpb24gb2YgY2VsbHMgZXhwcmVzc2luZyBmb3IgZWFjaCBvZiB5b3VyIGdlbmVzIG9mIGludGVyZXN0LgoKYGBge3IsIGVjaG89RkFMU0UsIGZpZy5oZWlnaHQ9NCwgZmlnLndpZHRoPTMwfQojIFRvIGNoYW5nZSB0aGUgeS1heGlzIHRvIHNob3cgcmF3IGNvdW50cywgYWRkIHVzZS5yYXcgPSBULgpEb3RQbG90KHN1YnRpc3M3LCBnZW5lc190b19jaGVjaywgcGxvdC5sZWdlbmQgPSBUKQpgYGAKCkhvdyBiaWcgYXJlIHRoZSBjbHVzdGVycz8KYGBge3J9CnRhYmxlKHN1YnRpc3M3QGlkZW50KQpgYGAKCiMjIENoZWNraW5nIGZvciBiYXRjaCBlZmZlY3RzCgpDb2xvciBieSBtZXRhZGF0YSwgbGlrZSBwbGF0ZSBiYXJjb2RlLCB0byBjaGVjayBmb3IgYmF0Y2ggZWZmZWN0cy4KYGBge3J9ClRTTkVQbG90KG9iamVjdCA9IHN1YnRpc3M3LCBkby5yZXR1cm4gPSBUUlVFLCBncm91cC5ieSA9ICJwbGF0ZS5iYXJjb2RlIikKYGBgCgpQcmludCBhIHRhYmxlIHNob3dpbmcgdGhlIGNvdW50IG9mIGNlbGxzIGluIGVhY2ggaWRlbnRpdHkgY2F0ZWdvcnkgZnJvbSBlYWNoIHBsYXRlLgoKYGBge3J9CnRhYmxlKGFzLmNoYXJhY3RlcihzdWJ0aXNzN0BpZGVudCksIGFzLmNoYXJhY3RlcihzdWJ0aXNzN0BtZXRhLmRhdGEkcGxhdGUuYmFyY29kZSkpCmBgYAoKCgojIyMgQXNzaWduaW5nIHN1YmFubm90YXRpb25zCgpGb3IgdGhlIHN1YnNldHMsIHdlIHByb2R1Y2Ugc3ViYW5ub3RhdGlvbnMuIFRoZXNlIHdpbGwgYmUgd3JpdHRlbiBiYWNrIGFzIG1ldGFkYXRhIGluIHRoZSBvcmlnaW5hbCBvYmplY3QsIHNvIHdlIGNhbiBzZWUgYWxsIHN1YmFubm90YXRpb25zIHRvZ2V0aGVyLgoKSWYgc29tZSBvZiB0aGUgY2x1c3RlcnMgeW91IGZpbmQgaW4gdGhlIHN1YnNldCBkZXNlcnZlIGFkZGl0aW9uYWwgYW5ub3RhdGlvbiwgeW91IGNhbiBhZGQgdGhhdCByaWdodCBoZXJlLiBVc2UgTkEgZm9yIGNsdXN0ZXJzIGZvciB3aGljaCBubyBzdWJhbm5vdGF0aW9uIGlzIG5lZWRlZC4KCmBgYHtyfQpzdWJjbHVzdGVyLmlkcyA8LSBjKDAsIDEsIDIsIDMsIDQsIDUpCnN1YmFubm90YXRpb24gPC0KICBjKCJUIGNlbGwiLAogICJuYXR1cmFsIGtpbGxlciBjZWxsIiwKICAibmF0dXJhbCBraWxsZXIgY2VsbCIsCiAgIlQgY2VsbCIsCiAgIlQgY2VsbCIsCiAgIlQgY2VsbCIpCiAgY2VsbF9vbnRvbG9neV9pZCA9IGMoIkNMOjAwMDAwODQiLAogICJDTDowMDAwNjIzIiwKICAiQ0w6MDAwMDYyMyIsCiAgIkNMOjAwMDAwODQiLAogICJDTDowMDAwMDg0IiwKICAiQ0w6MDAwMDA4NCIpCgpzdWJ0aXNzN0BtZXRhLmRhdGFbLCdhbm5vdGF0aW9uJ10gPC0gcGx5cjo6bWFwdmFsdWVzKHggPSBzdWJ0aXNzN0BpZGVudCwgZnJvbSA9IHN1YmNsdXN0ZXIuaWRzLCB0byA9IHN1YmFubm90YXRpb24pCnN1YnRpc3M3QG1ldGEuZGF0YVssJ2NlbGxfb250b2xvZ3lfaWQnXSA8LSBwbHlyOjptYXB2YWx1ZXMoeCA9IHN1YnRpc3M3QGlkZW50LCBmcm9tID0gc3ViY2x1c3Rlci5pZHMsIHRvID0gY2VsbF9vbnRvbG9neV9pZCkKCnRpc3NAbWV0YS5kYXRhW3N1YnRpc3M3QGNlbGwubmFtZXMsJ2Fubm90YXRpb24nXSA8LSBhcy5jaGFyYWN0ZXIoc3VidGlzczdAbWV0YS5kYXRhJGFubm90YXRpb24pCnRpc3NAbWV0YS5kYXRhW3N1YnRpc3M3QGNlbGwubmFtZXMsJ2NlbGxfb250b2xvZ3lfaWQnXSA8LSBhcy5jaGFyYWN0ZXIoc3VidGlzczdAbWV0YS5kYXRhJGNlbGxfb250b2xvZ3lfaWQpCgpUU05FUGxvdChvYmplY3QgPSBzdWJ0aXNzNywgZG8ubGFiZWwgPSBUUlVFLCBwdC5zaXplID0gMC41LCBncm91cC5ieT0nYW5ub3RhdGlvbicpCmBgYAoKV2hlbiB5b3Ugc2F2ZSB0aGUgc3VidGlzc3VlLCBwbGVhc2UgZ2l2ZSBpdCBhIG5hbWUuCgpgYGB7cn0Kc3VidGlzczcubmFtZSA9ICdOa19UX2NlbGxzJwpzYXZlKHN1YnRpc3M3LCBmaWxlPXBhc3RlMChzYXZlX2RpciwiLyIsc3VidGlzczcubmFtZSwgIl9zZXVyYXRfc3VidGlzczcuUm9iaiIpKQpgYGAKCgojIEV4cG9ydCB0aGUgZmluYWwgbWV0YWRhdGEKClNvIHRoYXQgQmlvaHViIGNhbiBlYXNpbHkgY29tYmluZSBhbGwgeW91ciBhbm5vdGF0aW9ucywgcGxlYXNlIGV4cG9ydCB0aGVtIGFzIGEgc2ltcGxlIGNzdi4KCmBgYHtyfQp3cml0ZS5jc3YodGlzc0BtZXRhLmRhdGFbLGMoJ3BsYXRlLmJhcmNvZGUnLCdhbm5vdGF0aW9uJywnc3ViYW5ub3RhdGlvbicpXSxmaWxlID1wYXN0ZTAoc2F2ZV9kaXIsIi8iLCB0aXNzdWVfb2ZfaW50ZXJlc3QsIl9hbm5vdGF0aW9uLmNzdiIpKQpgYGAKCgoK